python - Python更快的方法将每一行数据帧作为一个表插入到mysql
问题描述
我有这样的数据框,超过 300 行
name price percent volume Buy Sell
1 BID 41.30 -0.36 62292.0 604.0 6067.0
2 BVH 49.00 -1.01 57041.0 3786.0 3510.0
3 CTD 67.80 6.94 68098.0 2929.0 576.0
4 CTG 23.45 0.43 298677.0 16965.0 20367.0
5 EIB 18.20 -0.27 10517.0 306.0 210.0
对于每个名称,我在 mysql 中创建 1 个表。到目前为止,这是我的代码。
vn30 = vn30_list.iloc[:, [10,13,12,15,25,26]].dropna(how='all').fillna(0)
data = vn30_list.iloc[:, [13,12,15,25,26]].dropna(how='all').fillna(0)
data.columns = ['gia','percent','khoiluong','nnmua','nnban']
en = sa.create_engine('mysql+mysqlconnector://...', echo=True)
#insert into mysql
for i in range(30):
macp = vn30.iloc[i][0].lower()
#print(row)
compare_item = vn30.iloc[i][1]
if compare_item == data.iloc[i][0]:
row = data.iloc[i:i + 1, :]
#print(row)
row.to_sql(name=str(macp), con=en, if_exists= "append", index=False,schema="online")
有没有办法让它更快地处理 300 行?太感谢了。对不起我的英语。
解决方案
# import the module
from sqlalchemy import create_engine
# create sqlalchemy engine
engine = create_engine("mysql+pymysql://{user}:{pw}@localhost/{db}".format(user="root",pw="12345",db="employee"))
# Insert whole DataFrame into MySQL
data.to_sql('book_details', con = engine, if_exists = 'append', chunksize = 1000)
您可以在此处获取所有详细信息:https ://www.dataquest.io/blog/sql-insert-tutorial/
推荐阅读
- python - 有没有办法在 Windows 上使用 gradle 编译 python protobuf?
- java - 如何解决运行jar文件“找不到或加载主类”
- firefox - 如何将 Firefox 小书签转换为网络扩展或添加?
- excel - 如何在 vba 中使用 Vlookup
- ggplot2 - 在 ggplot 中,如何在 barplot 上制作 panel.grid.major?
- javascript - 如何让 jQuery 在 ES6 文件中正常工作
- node.js - Nodejs - 如何在 ubuntu 中卸载旧版本的 nodejs 并安装新版本的 nodejs
- swift - 如何使用 Stepper 将数据从 VC 传递到嵌入式 TableView
- python-3.x - 如何修复错误“未定义大文本”?,我不确定我是否打算在代码开头定义它
- node.js - 如何在反应中显示base64图像?