根据上篇文章我们可以得出sqlalchemy 中core 模式批量插入性能明显提高。
本篇文章介绍python中多种插入方式。
下面将依次插入30条,300条,3000条数据做对比。
pandas
engine = create_engine('mysql+pymysql://用户:密码@IP:3306/xx?charset=utf8')
df = pd.DataFrame()
col = ['F1', 'F2', 'F3', 'F4', 'F5','id']
for u in range(3000):
F1 = '123456'
F2 = '哦哦哦哦哦'
id = '22222'
F3 = 'djklsfids'
F4 = '电视剧啊肯定就是那活动'
F5 = '123456'
data = pd.DataFrame([F1,F2,F3,F4,F5,id],col).T
df = df.append(data, ignore_index=True)
df.to_sql('TEST',engine,if_exists='append',index=False)
30 插入时间: 0.137
, 0.145
,0.17
300 插入时间: 0.702
, 0.632
,0.62
3000 插入时间: 6.393
, 5.862
, 6.12
pymysql
conn = pymysql.connect(host='', port=3306, user='', 密码='', db='', charset='utf8')
cur = conn.cursor()
sql = "INSERT INTO TEST (F1,F2,F3,F4,F5,id) VALUES (%s,%s,%s,%s,%s,%s)"
data=[]
for u in range(3000):
data.append(('123456','哦哦哦哦哦','djklsfids','电视剧啊肯定就是那活动','123456','22222'))
cur.executemany(sql,data)
conn.commit()
cur.close()
conn.close()
30 插入时间:0.023
, 0.071
,0.028
300 插入时间: 0.040
,0.056
, 0.041
3000 插入时间: 0.441
, 0.429
, 0.439
sqlalchemy
db = sqltools(**config)
users = db.get_db('TEST')
values_list = []
for i in range(3000):
bb = {"F1": '123456',
"F2": '哦哦哦哦哦',
"id": "22222",
"F3": 'djklsfids',
"F4": '电视剧啊肯定就是那活动',
"F5": '123456'}
values_list.append(bb)
db.insert(users, values_list)
30 插入时间: 0.18
, 0.173
, 0.146
300 插入时间: 0.197
, 0.275
, 0.229
3000 插入时间: 0.694
, 0.849
, 0.851
总结
以上可看出效率最高的还是pymysql的executemany插入速度最快。
如果是for循环依次单个插入的话pymysql与sqlalchemy速度都差不多。
版权声明:本文为weixin_43863961原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。