目录媒介PyMySQL 是一个纯 Python 的库,用于毗连 MySQL 数据库,并执行 SQL 语句。它是 MySQLdb 的替换品,但不同于后者,PyMySQL 不需要 C 语言的依赖,因此更加轻量且易于安装和利用。该库的主要用途是通过 Python 代码与 MySQL 数据库进行交互,比如执行查询、插入数据、更新数据、删除数据等操纵。 一、PyMySQL的特点该库的特点主要有以下三点:
二、安装[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]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]PyMySQL[/code] 是一个轻量级、易于利用的 Python 库,适合 Python 步调员与 MySQL 数据库进行交互。通过它,你可以高效地执行 SQL 查询、插入、更新和删除数据操纵,同时还可以利用其事务支持、游标控制等高级功能。 以上就是python操纵MySQL的详细教程的详细内容,更多关于python操纵MySQL的资料请关注脚本之家别的相干文章! 来源:https://www.jb51.net/python/3284854eo.htm 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|手机版|小黑屋|梦想之都-俊月星空
( 粤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.