【发布时间】: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,基本上在这里“冻结”:
codeINFO 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