pymysql, pandas, sqlalchemy 性能对比

根据上篇文章我们可以得出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速度都差不多。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值