我的脚本使用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个文件(非常随机)。它冻结的桌子' on实际上是完全上传的(当我检查数据库时,它的全部都在那里)所以它似乎冻结了进入下一个语句。 (不会抛出任何错误;除了没有任何反应,脚本似乎正常运行)。任何帮助表示赞赏。
编辑:
启用调试后,冻结时似乎完成了所有任务(因此即使在数据库中也会显示表格),即
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个表后似乎停止了)