【问题标题】:Populating MySQL database with python randomly 'freezing'用 python 随机“冻结”填充 MySQL 数据库
【发布时间】:2016-07-01 16:35:34
【问题描述】:

我的脚本使用 sqlalchemy 连接到 MySQL 数据库

from sqlalchemy import *
engine = create_engine("mysql+mysqlconnector://user:password@ip:port/dbName")

然后使用 pandas read_csv 函数读取 txt 文件,并使用数据框在数据库中创建一个新表:

df.to_sql(tableName, con=engine, flavor='mysql', schema=None, if_exists='replace', index=False)

脚本工作得很好,除了随机它似乎卡在前面的语句上,即写入数据库。随机我的意思是这不是特定于文件的,因此例如上传更大的文件并不需要更长的时间。如果我重新启动它,它之前“冻结”的文件会立即上传,但之后它会再次冻结说 12 个文件或 1 个文件(非常随机)。它“冻结”的表实际上已完全上传(当我检查数据库时,它都在那里)所以它似乎冻结到下一个语句。 (没有抛出任何错误;脚本似乎正常运行,但没有任何反应)。任何帮助表示赞赏。

编辑:

启用调试后,冻结时它似乎完成了所有任务(因此表格甚至出现在数据库中)即

2016-03-16 03:16:19,720 INFO sqlalchemy.engine.base.Engine {}
2016-03-16 03:16:19,806 INFO sqlalchemy.engine.base.Engine COMMIT
2016-03-16 03:16:19,935 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2016-03-16 03:16:20,015 INFO sqlalchemy.engine.base.Engine INSERT INTO `tableName` COLUMNS (***shortened this***)
2016-03-16 03:16:21,482 INFO sqlalchemy.engine.base.Engine COMMIT
2016-03-16 03:16:21,686 INFO sqlalchemy.engine.base.Engine SHOW FULL TABLES FROM `dbName`
2016-03-16 03:16:21,686 INFO sqlalchemy.engine.base.Engine {}

它根本不会继续执行下一个命令,即下一次迭代(同样情况并非总是如此;现在似乎在大约 1-3 个表后停止)

【问题讨论】:

  • 是远程数据库吗?当它像这样卡住时,你确定你有互联网吗?
  • 是的,它是一个远程数据库。 100% 积极的网络没有下降。将 echo 变为 true,基本上在这里“冻结”:code INFO sqlalchemy.engine.base.Engine {} INFO sqlalchemy.engine.base.Engine COMMIT INFO sqlalchemy.engine.base.Engine BEGIN(隐式)INFO sqlalchemy.engine。 base.Engine INSERT INTO 等等等等等等... INFO sqlalchemy.engine.base.Engine ({'list going here'}) INFO sqlalchemy.engine.base.Engine 提交信息 sqlalchemy.engine.base.Engine 显示来自@的完整表987654325@ INFO sqlalchemy.engine.base.Engine {} code

标签: python mysql database pandas sqlalchemy


【解决方案1】:

可能是 Python 垃圾收集。检查您的系统活动监视器。 GC 应该显示为使用大量 CPU 的 Python 进程。

gc 库可以帮助您对垃圾收集器进行故障排除和调整。

【讨论】:

  • CPU 几乎没有使用,没有列出 GC 进程。使用 pycharm 作为 IDE,当脚本“冻结”时它使用 1.3% 的 CPU。
猜你喜欢
  • 2018-02-14
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
  • 2019-07-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多