新闻动态

良好的口碑是企业发展的动力

python pymysql用法

发布时间:2024-11-15 08:21:11 点击量:71
定制化网站建设

 

使用 pymysql 库来操作 MySQL 数据库是 Python 开发中常见的一种方式。pymysql 是一个纯 Python 实现的 MySQL 客户端库,支持 Python 3.x 版本,功能强大且易于使用。下面我将详细介绍如何使用 pymysql 来连接、查询、插入、更新和删除 MySQL 数据库中的数据。

安装 PyMySQL

在使用 pymysql 之前,你需要确保已安装该库。可以通过 pip 来安装:

pip install pymysql

连接数据库

在使用 pymysql 操作数据库之前,首先要建立与数据库的连接。下面的代码展示了如何连接到数据库:

import pymysql

# 打开数据库连接
connection = pymysql.connect(
    host='localhost',   # 数据库地址
    user='root',        # 用户名
    password='password',# 密码
    database='mydb',    # 要连接的数据库名
    charset='utf8mb4',  # 编码设置
)

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

执行 SQL 查询

一旦连接建立,就可以使用游标对象来执行 SQL 查询。pymysql 支持多种 SQL 执行方式,包括查询、插入、更新和删除数据。

1. 查询数据

sql = "SELECT * FROM my_table"
cursor.execute(sql)

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

for record in records:
    print(record)

2. 插入数据

插入数据时,可以使用 execute() 方法,并且可以通过参数化查询来避免 SQL 注入风险。

sql = "INSERT INTO my_table (name, age) VALUES (%s, %s)"
values = ("John Doe", 28)

try:
    cursor.execute(sql, values)
    connection.commit()  # 提交事务
except Exception as e:
    connection.rollback()  # 回滚事务
    print(f"Error: {e}")

3. 更新数据

更新某条数据时,需指定条件。

sql = "UPDATE my_table SET age = %s WHERE name = %s"
values = (30, "John Doe")

try:
    cursor.execute(sql, values)
    connection.commit()
except Exception as e:
    connection.rollback()
    print(f"Error: {e}")

4. 删除数据

删除数据时同样需要小心,特别是条件的书写。

sql = "DELETE FROM my_table WHERE name = %s"
value = ("John Doe",)

try:
    cursor.execute(sql, value)
    connection.commit()
except Exception as e:
    connection.rollback()
    print(f"Error: {e}")

处理事务

pymysql 默认开启事务控制。这意味着你对数据库的所有变更操作(插入、更新、删除)必须明确提交(commit)才能生效,否则可以选择回滚(rollback)撤销变更。

参数化查询

为了防范 SQL 注入攻击,始终建议使用参数化查询来执行 SQL 语句。pymysql 支持参数化查询,你可以使用 execute() 函数的第二个参数来传递参数值。

结果集操作

执行查询后,可以通过 fetchall(), fetchone(), fetchmany(n) 三种方法方法来获取查询结果。

  • fetchall():获取全部结果。
  • fetchone():获取下一行结果。
  • fetchmany(size):获取指定数量的结果。

关闭连接

操作结束后,务必关闭游标和连接,以释放数据库资源。

cursor.close()
connection.close()

异常处理

在执行数据库操作时,难免会遇到异常。因此,*在操作数据库的过程中加入异常处理机制。

try:
    # 数据库操作
except pymysql.MySQLError as e:
    print(f"Error: {e}")
finally:
    cursor.close()
    connection.close()

连接池

对于大规模应用,为每个请求都单独打开一个新的数据库连接可能会比较耗资源。可以考虑使用连接池库如 DBUtils 来提高数据库连接的管理能力。

总结

pymysql 库提供了对 MySQL 数据库的强大支持,能够很好地与 Python 集成,支持多种操作数据库的方式,包括基本的增删改查。同时,通过使用有效的异常处理、参数化查询以及连接池等技术,可以使你的数据库代码更为安全和高效。

免责声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,请发送邮件至:dm@cn86.cn进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。本站原创内容未经允许不得转载。
上一篇: vue动态菜单
下一篇: java tostring