根据上篇文章我们可以得出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.1370.1450.17
300 插入时间: 0.7020.6320.62
3000 插入时间: 6.3935.8626.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.0230.0710.028
300 插入时间: 0.0400.0560.041
3000 插入时间: 0.4410.4290.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.180.1730.146
300 插入时间: 0.1970.2750.229
3000 插入时间: 0.6940.8490.851


总结

以上可看出效率最高的还是pymysql的executemany插入速度最快。

如果是for循环依次单个插入的话pymysql与sqlalchemy速度都差不多。


版权声明:本文为weixin_43863961原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_43863961/article/details/126893914