pandas的to_sql加速失败记录


简介

在使用python作数据分析的时候,不免会用到pandas,而pandas与数据库(mysql)的交互在速度上一直是一个瓶颈

通过网上的一些笔记,发现了一些加速的方法,目前来看都是不可用的。

记录

先随便生成一个100w行的文件,在实际工作中远远高于100w。

#10进制转化成ip地址
def int2ip(x):  
    return '.'.join([str(int(x)//(256**i)%256) for i in range(3,-1,-1)])


fp=open('1.csv','w')
fp.write('ip,score,id\n')
n=1000000
for i in range(1,n):
    fp.write(f'{int2ip(i)},{i},{i}\n')
fp.close()

插入数据库方式及时间

df.to_sql('cellfee',con=engine,if_exists='replace',index=True)
# 11.4s

df.to_sql('cellfee',con=engine,if_exists='replace',index=True,chunksize=50000)
# 11.3s

df.to_sql('cellfee',con=engine,if_exists='replace',index=True,chunksize=50000,method='multi')
# 46.1s

from sqlalchemy import event
@event.listens_for(engine, 'before_cursor_execute')
def receive_before_cursor_execute(conn, cursor, statement, params, context, executemany):
    if executemany:
        cursor.fast_executemany = True
df.to_sql('cellfee',con=engine,if_exists='replace',index=True)
# 11.7s

不知道是使用方法有问题还是怎么回事,mysql加速完全没有效果,暂时放弃了。


文章作者: xyzz
文章链接: http://www.xyzzpwn.top
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 xyzz !
 上一篇
关于gitlab-ce数据库丢失后的修复 关于gitlab-ce数据库丢失后的修复
简介在2023年4月24日晚接到gitlab升级通知后,例行升级惹出的大问题。本文记录了修复gitlab的全过程及中间放下的错。由于中间部分操作未能及时记录截图,所以在这使用中间备份的一些场景进行复现。对自己做一个反省。 基本情况: 当前
2023-04-26
下一篇 
docker下gpu的使用 docker下gpu的使用
简介关于gpu在虚拟化中的使用,目前分为三种 直通:好处很明显,可以直接对gpu进行分配,不过一个显卡只能直通到一个设备上,只能独占,在虚拟机中的gpu切换较为繁琐。 vgpu:可以将一个gpu拆解成多个虚拟显卡分给多个虚拟机使用,但是支
  目录