python - Python。优化 Append DF to MySQL DB
问题描述
我在数据库中添加这样的模型的输出:
cursor = conn.cursor()
for i in range(len(df)):
UserId = df.loc[i, 'UserId']
Timestamp = df.loc[i, 'Timestamp']
ChurnPropensity = df.loc[i, 'ChurnPropensity']
sql = "INSERT INTO DB_Name (UserId, Timestamp, ChurnPropensity) VALUES ({},'{}',{});".format(UserId, Timestamp, ChurnPropensity)
cursor.execute(sql)
conn.commit()
但是,由于 for 循环,它需要很长时间。您将如何改进计算时间?
致敬,
解决方案
试试这个方法。理想情况下,它应该加快执行速度。
query = "INSERT INTO DB_Name (UserId, Timestamp, ChurnPropensity) VALUES ({},'{}',{});"
df.apply(lambda row: cursor.execute(query.format(row['UserId'],
row['Timestamp'],
row['ChurnPropensity'])),
axis=1)
根据我的经验,execute
方法本身很慢,因此您可以通过尝试一次执行多个查询来加快速度。
query = "INSERT INTO DB_Name (UserId, Timestamp, ChurnPropensity) VALUES ({},'{}',{});"
queries_list = df.apply(lambda row: query.format(row['UserId'],
row['Timestamp'],
row['ChurnPropensity']), axis=1).values.tolist()
queries = ' '.join(queries_list)
cursor.execute(queries, multi=True)
推荐阅读
- ios - 无法从 collectionView 传递 indexpath(进入 LightBox 包)
- reactjs - 如何在运行时设置/重置属性以响应元素
- oracle - 在 oracle 中滚动 6 个月的日期
- google-app-engine - How to add custom span into Trace, in go
- sql - 选择每个子行都满足条件的行
- php - The phalcon app failed when running the codeception tests
- html - Bootstrap4 网格系统,嵌套行
- javascript - Youtube iframe api a.u() is not a function
- android - org.gradle.api.UncheckedIOException:无法捕获输入的快照
- javascript - 如何通过禁用其默认属性在自动完成中显示算法生成的结果