Python3 MySQL数据库连接-PyMySQL驱动

Python3 MySQL数据库连接 – PyMySQL驱动知识点汇总

Python3 MySQL数据库连接

PyMySQL驱动知识点汇总 – 编程小白也能懂的详细指南

数据库连接流程概览

1
安装PyMySQL
2
导入模块
3
建立连接
4
创建游标
5
执行SQL
6
处理结果
7
关闭连接

安装PyMySQL

在使用PyMySQL之前,需要先安装它。最简单的方法是使用pip:

pip install pymysql

安装完成后,就可以在Python脚本中导入并使用PyMySQL模块了。

提示: 如果你同时安装了Python2和Python3,可能需要使用pip3 install pymysql来确保安装到Python3环境中。

建立数据库连接

连接MySQL数据库需要提供以下信息:

  • 主机地址 (host) – 数据库服务器的地址
  • 端口 (port) – MySQL服务端口,默认是3306
  • 用户名 (user) – 数据库登录用户名
  • 密码 (password) – 数据库登录密码
  • 数据库名 (database) – 要连接的数据库名称

建立连接的基本代码:

import pymysql

# 创建连接对象
connection = pymysql.connect(
    host=‘localhost’, # 数据库服务器地址
    user=‘your_username’, # 用户名
    password=‘your_password’, # 密码
    database=‘your_database’, # 数据库名称
    port=3306, # 端口,MySQL默认3306
    charset=‘utf8mb4’ # 字符编码
)
注意: 实际开发中不要把密码直接写在代码里!应该使用环境变量或配置文件来存储敏感信息。

使用游标执行SQL

连接数据库后,需要通过”游标”来执行SQL语句。游标就像是一个指针,用于在数据库结果集中导航。

创建游标:

# 创建游标对象
cursor = connection.cursor()

执行SQL语句:

# 执行SQL语句
cursor.execute(“SELECT * FROM users”)

对于需要插入数据的SQL语句,通常使用参数化查询来防止SQL注入攻击:

# 安全的方式:使用参数化查询
sql = “INSERT INTO users (name, age) VALUES (%s, %s)”
data = (‘张三’, 25)
cursor.execute(sql, data)
提示: 使用参数化查询(%s占位符)而不是拼接字符串,这是防止SQL注入的关键安全措施!

处理查询结果

执行SELECT查询后,可以使用游标的方法获取结果:

# 获取单条记录
one_row = cursor.fetchone()

# 获取多条记录(指定数量)
many_rows = cursor.fetchmany(5) # 获取5条记录

# 获取所有记录
all_rows = cursor.fetchall()

获取的结果通常是元组(tuple)的列表,每条记录是一个元组:

# 示例:[(1, ‘张三’, 25), (2, ‘李四’, 30)]

你也可以获取字典形式的结果(更易读):

# 创建游标时指定返回字典格式
cursor = connection.cursor(pymysql.cursors.DictCursor)

cursor.execute(“SELECT * FROM users”)
result = cursor.fetchall()
# 示例:[{‘id’: 1, ‘name’: ‘张三’, ‘age’: 25}, …]

事务管理

在MySQL中,事务是一组SQL操作,这些操作要么全部成功,要么全部失败。

PyMySQL默认开启了事务,执行修改操作后需要手动提交:

try:
    # 执行一些修改操作
    cursor.execute(“INSERT …”)
    cursor.execute(“UPDATE …”)
    # 提交事务
    connection.commit()
except:
    # 发生错误时回滚
    connection.rollback()
重要: 对于INSERT、UPDATE、DELETE等操作,执行后必须调用connection.commit(),否则更改不会保存到数据库!
提示: 使用with语句可以自动管理事务和关闭:
with connection.cursor() as cursor:
    cursor.execute(“…”)
connection.commit()

关闭连接

使用完数据库后,应该关闭游标和连接以释放资源:

# 关闭游标
cursor.close()

# 关闭连接
connection.close()

更安全的做法是使用try...finally确保连接关闭:

try:
    # 数据库操作代码…
finally:
    cursor.close()
    connection.close()

或者使用上下文管理器自动关闭:

with pymysql.connect(…) as connection:
    with connection.cursor() as cursor:
        cursor.execute(“SELECT …”)
        result = cursor.fetchall()
    # 这里会自动提交事务
# 这里连接会自动关闭

完整代码示例

下面是一个完整的PyMySQL使用示例,包含连接、查询、插入和关闭操作:

import pymysql

# 建立数据库连接
connection = pymysql.connect(
    host=‘localhost’,
    user=‘test_user’,
    password=‘secure_password’,
    database=‘test_db’,
    charset=‘utf8mb4’,
    cursorclass=pymysql.cursors.DictCursor # 返回字典格式结果
)

try:
    with connection.cursor() as cursor:
        # 查询数据
        sql = “SELECT id, name, email FROM users WHERE age > %s”
        cursor.execute(sql, (20,))
        result = cursor.fetchall()
        print(“查询结果:”)
        for row in result:
            print(row)

        # 插入新数据
        sql = “INSERT INTO users (name, email, age) VALUES (%s, %s, %s)”
        cursor.execute(sql, (‘王五’, ‘wangwu@example.com’, 28))

    # 提交事务
    connection.commit()
finally:
    # 关闭连接
    connection.close()
    print(“数据库连接已关闭”)

PyMySQL知识点汇总 | 适用于编程小白的详细指南 | 建议保存此页面作为参考

在使用数据库时,请务必注意数据安全和SQL注入防护!

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部