找回密码
 立即注册

QQ登录

只需一步,快速开始

python操纵MySQL的详细教程

2024-11-4 22:41| 发布者: 2ae29| 查看: 156| 评论: 0

摘要: 目录媒介一、PyMySQL的特点二、安装三、根本用法(一)毗连MySQL数据库(二)数据查询(三)插入数据(四)更新和删除数据(五)事务管理四、游标范例五、安全性六、常见错误处理惩罚七、性能优化八、总结媒介 PyMyS
目录

媒介

PyMySQL 是一个纯 Python 的库,用于毗连 MySQL 数据库,并执行 SQL 语句。它是 MySQLdb 的替换品,但不同于后者,PyMySQL 不需要 C 语言的依赖,因此更加轻量且易于安装和利用。该库的主要用途是通过 Python 代码与 MySQL 数据库进行交互,比如执行查询、插入数据、更新数据、删除数据等操纵。

一、PyMySQL的特点

该库的特点主要有以下三点:

  • 纯 Python 实现:不需要依赖 C 扩展库,可以轻松在各类系统上利用,如 Windows、Linux、macOS 等。

  • 兼容性强:支持 MySQL 5.x 和 MySQL 8.x 版本,也兼容 MariaDB。

  • 易用性:提供了与 [code]MySQLdb[/code] 雷同的 API,便于用户从 [code]MySQLdb[/code] 迁徙过来。

二、安装

[code]PyMySQL[/code] 可以通过 [code]pip[/code] 轻松安装:

[code]pip install pymysql [/code]

三、根本用法

(一)毗连MySQL数据库

在利用 [code]PyMySQL[/code] 之前,你需要先毗连到 MySQL 数据库。毗连数据库时,通常需要提供数据库的主机地点、用户名、暗码、数据库名等信息。

示例:

[code]import pymysql # 创建毗连 connection = pymysql.connect( host='localhost', # 数据库主机地点 user='your_username', # 数据库用户名 password='your_password', # 数据库暗码 database='your_dbname', # 选择的数据库 charset='utf8mb4', # 指定字符集 cursorclass=pymysql.cursors.DictCursor # 返回字典格式的数据 ) # 创建游标 cursor = connection.cursor() # 关闭游标和毗连 cursor.close() connection.close()[/code]

(二)数据查询

利用游标对象来执行 SQL 查询并获取数据。

示例:

[code]try: # 创建游标 with connection.cursor() as cursor: # SQL 查询 sql = "SELECT * FROM users WHERE age > %s" cursor.execute(sql, (25,)) # 利用参数化查询防止 SQL 注入 # 获取结果 results = cursor.fetchall() # 返回全部结果 for row in results: print(row) finally: # 关闭毗连 connection.close()[/code]

(三)插入数据

执行插入操纵时,可以利用 [code]execute()[/code] 或 [code]executemany()[/code] 方法。

示例:

[code]try: with connection.cursor() as cursor: # SQL 插入语句 sql = "INSERT INTO users (name, age, email) VALUES (%s, %s, %s)" # 执行单条插入 cursor.execute(sql, ('John Doe', 30, 'john.doe@example.com')) # 执行多条插入 users = [ ('Alice', 25, 'alice@example.com'), ('Bob', 28, 'bob@example.com') ] cursor.executemany(sql, users) # 提交更改 connection.commit() finally: connection.close()[/code]

(四)更新和删除数据

雷同于插入数据,更新和删除数都是通过 SQL 语句和 [code]execute()[/code] 函数来完成。

  • 更新数据

示例:

[code]try: with connection.cursor() as cursor: # SQL 更新语句 sql = "UPDATE users SET email = %s WHERE name = %s" cursor.execute(sql, ('new.email@example.com', 'John Doe')) # 提交更改 connection.commit() finally: connection.close()[/code]
  • 删除数据

示例:

[code]try: with connection.cursor() as cursor: # SQL 删除语句 sql = "DELETE FROM users WHERE name = %s" cursor.execute(sql, ('John Doe',)) # 提交更改 connection.commit() finally: connection.close()[/code]

(五)事务管理

MySQL 数据库支持事务,[code]PyMySQL[/code] 默认启用了自动提交。假如你需要手动控制事务,可以关闭自动提交并在合适的机会提交或回滚。

示例:

[code]try: # 关闭自动提交 connection.autocommit(False) with connection.cursor() as cursor: # SQL 插入语句 sql = "INSERT INTO users (name, age, email) VALUES (%s, %s, %s)" cursor.execute(sql, ('Chris', 27, 'chris@example.com')) # 人为错误,测试回滚 raise Exception("人为触发异常") # 提交事务 connection.commit() except Exception as e: print(f"出现错误: {e}") # 回滚事务 connection.rollback() finally: connection.close()[/code]

四、游标范例

[code]PyMySQL[/code] 提供了多种游标范例,实用于不同的场景:

  • 默认游标:返回元组格式的结果。

  • 字典游标 ([code]DictCursor[/code]):返回字典格式的结果,字段名作为键。

  • SSCursor:流式游标,用于处理惩罚大数据量时,制止一次性加载大量数据到内存。

利用不同游标范例可以通过 [code]cursorclass[/code] 参数指定。比方:

[code]# 字典游标 connection = pymysql.connect( host='localhost', user='your_username', password='your_password', database='your_dbname', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor # 利用字典游标 )[/code]

五、安全性

为了防止 SQL 注入攻击,务必利用参数化查询,而不是将参数直接拼接到 SQL 字符串中。

示例:

[code]# 不安全的写法 sql = f"SELECT * FROM users WHERE name = '{name}'" # 容易导致 SQL 注入 # 安全的写法 sql = "SELECT * FROM users WHERE name = %s" cursor.execute(sql, (name,))[/code]

六、常见错误处理惩罚

[code]PyMySQL[/code] 中常见的错误处理惩罚可以通过捕捉异常来完成:

[code]import pymysql try: connection = pymysql.connect(host='localhost', user='root', password='', database='test_db') cursor = connection.cursor() except pymysql.MySQLError as e: print(f"数据库毗连失败: {e}")[/code]

七、性能优化

  • 利用批量操纵:如插入数据时,利用 [code]executemany()[/code] 批量插入,减少数据库的交互次数。

  • 毗连池:在大规模应用中,可以通过第三方库如 [code]DBUtils[/code] 或 [code]SQLAlchemy[/code] 提供的毗连池来优化数据库毗连的复用性。

  • 流式查询:对于大规模查询,利用 [code]SSCursor[/code] 流式游标,制止一次性加载全部数据到内存。

八、总结

[code]PyMySQL[/code] 是一个轻量级、易于利用的 Python 库,适合 Python 步调员与 MySQL 数据库进行交互。通过它,你可以高效地执行 SQL 查询、插入、更新和删除数据操纵,同时还可以利用其事务支持、游标控制等高级功能。

以上就是python操纵MySQL的详细教程的详细内容,更多关于python操纵MySQL的资料请关注脚本之家别的相干文章!


来源:https://www.jb51.net/python/3284854eo.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

最新评论

关闭

站长推荐上一条 /6 下一条

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-7-1 19:30 , Processed in 0.033548 second(s), 19 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部