python - MySql插入速度太慢
问题描述
我正在开发一个从 GitHub API 接收信息并对其进行分析的项目。问题是当我尝试插入这种巨大的数据时(例如在文件中我插入一个列表列表,如下所示,其中包含 19k 个项目)需要很长时间。我该如何改进呢?谢谢。
for i in commits_array:
for j in i[-1]:
self.insert_value_to_files_DB(j)
def insert_value_to_files_DB(self, array):
try:
sql = "INSERT INTO files (file_count,file_sha,file_name,file_status,file_additions,file_deletions,file_changes,commit_sha) VALUES (%s, %s, %s, %s,%s, %s, %s,%s)"
self.cursor.execute(sql, array)
self.connection.commit()
except mysql.connector.Error as error:
print("Failed to insert into MySQL table {}".format(erro
解决方案
19,000 行对于 dbms 来说并不大。它很小。
在开始插入行之前,请执行
self.connection.start_transaction()
然后每隔一百行左右
self.connection.commit()
self.connection.start_transaction()
然后,当你完成后,做一个最终的 commit()。
在插入时,提交操作需要时间。将多行放入一个提交中会使事情变得更快。
推荐阅读
- css - 使用 PrimeNG 将对话框弹出窗口定位为侧边栏
- flutter - 获取另一个小部件中变量的值
- environment-variables - 如何为某个命令设置环境变量?
- ios - 在 xCode 中禁用链接预览
- javascript - 检索在单独文件中声明的选择对象
- python - Pandas 数据框,根据唯一值的数量选择 n 个随机行
- python - 如何从 AWS PySpark 中加载的 python 包加载本地资源
- android - 如何在 Android 中将 Shipbook 远程日志记录平台与 Timber 集成?
- r - 如何将累积时间序列转换为 R 中的非累积时间序列?
- c - 在这种情况下 sizeof 是如何工作的?