PyMySQL插入字典类型的数据

我们有如下数据列表,需要将该数据插入到对应的数据表student中(表的字段名和数据列表中字典的键名相同

student_list = [ {"name": "Tony", "age": 19, "sex": "male"}, {"name": "Lisa", "age": 18, "sex": "female"}, {"name": "Jack", "age": 20, "sex": "male"} ]

使用pymysql批量插入数据可以用以下方法

cursor.executemany(sql, data_list)

上面的sql是一条包含占位符的插入语句,data_list就是需要插入的数据

可以通过以下方法来生成对应的sql

def generate_sql(data_list): data = data_list[0] # 取出第一条 cols = ", ".join('`{}`'.format(k) for k in data.keys()) # 字段名拼接 val_cols = ', '.join('%({})s'.format(k) for k in data.keys()) # 对应值的占位符拼接 sql = """ INSERT INTO student(%s) VALUES(%s) """ % (cols, val_cols) return sql

生成的sql如下:

INSERT INTO student(`name`, `age`, `sex`) VALUES(%(name)s, %(age)s, %(sex)s)

生成sql后就可以使用executemany()方法批量插入数据到数据库中,全部代码如下

import pymysql MYSQL_CONFIG = { 'host': 'localhost', # IP地址 'port': 3306, # 端口 'user': 'myuser', # 用户名 'passwd': '111111', # 密码 'db': 'myclass', # 数据库 'charset': 'utf8', # 编码 } def generate_sql(data_list): data = data_list[0] cols = ", ".join('`{}`'.format(k) for k in data.keys()) val_cols = ', '.join('%({})s'.format(k) for k in data.keys()) sql = """ INSERT INTO student(%s) VALUES(%s) """ % (cols, val_cols) return sql def main(): student_list = [ {'name': 'Tony', 'age': 19, 'sex': 'male'}, {'name': 'Lisa', 'age': 18, 'sex': 'female'}, {'name': 'Jack', 'age': 20, 'sex': 'male'} ] conn = pymysql.connect(**MYSQL_CONFIG) # 数据库连接 cur = conn.cursor() # 游标对象 sql = generate_sql(student_list) cur.executemany(sql, student_list) conn.commit() cur.close() conn.close() if __name__ == '__main__': main()

执行以上代码,就可以看到数据成功插入到表中

name age sex
Tony 19 male
Lisa 18 female
Jack 20 male

__EOF__

本文作者蓝莓薄荷
本文链接https://www.cnblogs.com/blueberry-mint/p/14519173.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   蓝莓薄荷  阅读(2861)  评论(2编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示