Python pymysql库实现批量插入、查询与更新的完整指南
本文详细介绍Python中pymysql库的核心用法,涵盖连接MySQL数据库、批量插入数据、执行查询以及更新记录等关键操作。通过具体代码示例,展示如何高效处理数据库交互,包括事务提交与异常回滚机制,帮助开发者快速掌握pymysql在实战中的应用技巧。
pymysql批量插入数据实现
在Python中利用pymysql进行数据库操作时,批量插入是一项常见且高效的功能。首先需要建立与MySQL数据库的连接,指定主机地址、端口、用户名、密码、数据库名及字符集。随后创建游标对象,构造包含占位符的INSERT语句。通过调用cursor.executemany()方法,可以将包含多组数据的列表一次性插入数据库,从而显著提升插入效率。操作完成后,需提交事务以保存更改,关闭游标,并打印受影响的行数。若过程中发生异常,则执行回滚操作并输出错误信息。
import pymysql
def insert_to_mysql(to_db_list):
mysql_db = pymysql.connect(host="HOST_IP", port=3306, user="username", password="password",
database="db", charset="utf8")
cursor = mysql_db.cursor()
sql = "INSERT INTO `your_db`.`your_table`(`colum1`, `colum2`, `colum3`) VALUES (%s,%s,%s)"
try:
# cursor.execute()
cursor.executemany(sql, to_db_list) # 批量插入
effect_rows = cursor.rowcount
mysql_db.commit()
cursor.close()
print('数据库添加成功,插入 {}条数据'.format(effect_rows))
return effect_rows
except Exception as e:
mysql_db.rollback()
print('数据库执行失败')
print(e)
return 0
my_list = []
my_list.append(('v1', 'v2', 'v3'))
cnt = insert_to_mysql(my_list)
pymysql执行数据查询
数据查询是数据库交互的另一核心环节。通过pymysql获取数据时,同样需要创建游标并执行SELECT语句。执行查询后,使用cursor.fetchall()方法可以获取所有匹配的记录,返回结果通常为元组列表。开发者可遍历该列表,根据索引提取特定字段(如ID和名称)进行后续处理或展示。这种方式适用于需要一次性获取大量数据的场景,确保数据完整返回。
def get_id_name():
cursor = mysql_db.cursor()
sql = "select id, name from `your_db`.`table`"
cursor.execute(sql)
res = cursor.fetchall()
# print(res)
return res
my_list = get_id_name()
for index in range(len(my_list)):
print(my_list[index][0]) # id
print(my_list[index][1]) # name
pymysql批量更新记录
当需要修改现有数据时,可使用UPDATE语句结合pymysql实现。构建包含SET和WHERE子句的SQL语句,指定要更新的列及更新条件(如ID)。与批量插入类似,若需更新多条记录,可使用cursor.executemany()配合包含更新值和目标ID的列表。执行后提交事务,若出现异常则回滚并记录错误。此方法适用于需要批量更新特定字段值的业务场景,确保数据一致性与操作原子性。
def update_by_id(update_list):
"""根据ID更新col1, col2, col3
list 依次为 col1, col2, col3, id
:param update_list:
:return:
"""
cursor = mysql_db.cursor()
sql = "UPDATE `your_db`.`table` SET col1=(%s),col2=(%s),col3=(%s) WHERE id=(%s)"
try:
# cursor.execute()
cursor.executemany(sql, update_list) # 批量插入
mysql_db.commit()
cursor.close()
print('数据库更新成功')
except Exception as e:
mysql_db.rollback()
print('数据库更新失败')
print(e)
my_list = []
my_list.append(('v1', 'v2', 'v3', 'id'))
update_by_id(my_list)
以上即为Python pymysql库在批量插入、查询及更新方面的常用操作详解。这些基础用法涵盖了数据库交互的主要场景,掌握它们有助于提升开发效率。如需了解更多关于pymysql的高级特性或最佳实践,建议参考官方文档或本站其他相关技术文章。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









