当前位置:
首页 > Python基础教程 >
-
详解PyMySQL插入字典类型的数据
在我们爬虫或者调API获取数据后,需要将数据存入到数据库中,如果数据是列表嵌套字典格式的话,一般做法是遍历列表,然后用字典生成对应的SQL语句再执行插入到表中,本文将介绍一种更加简便的方法来插入字典类型的数据,需要的朋友可以参考下
在我们爬虫或者调API获取数据后,需要将数据存入到数据库中,如果数据是列表嵌套字典格式的话,一般做法是遍历列表,然后用字典生成对应的SQL语句再执行插入到表中。本文将介绍一种更加简便的方法来插入字典类型的数据。
我们有如下数据列表,需要将该数据插入到对应的数据表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 |
到此这篇关于PyMySQL插入字典类型的数据的文章就介绍到这了,更多相关PyMySQL字典类型数据内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持! |
原文链接:https://www.cnblogs.com/blueberry-mint/p/14519173.html
栏目列表
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
开启SQLSERVER数据库缓存依赖优化网站性能
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比