【发布时间】:2021-01-03 10:41:44
【问题描述】:
您好,有人有解决此问题的故障排除想法吗?
我在本地机器上有一个标准的 python-sql 连接:
from sqlalchemy import create_engine
engine = create_engine("mysql+pymysql://root:*******@localhost/my_DB")
con = engine.connect()
这个数据库由 200 多个表组成,我在其中存储股票/市场信息,我需要每天更新它,为此我通常会在所有表中构建一个循环,以使用 pandas 数据阅读器从 yahoo_finance 获取最新信息.
一旦加载到我使用的新 DF 中
df_new.to_sql(name = stock_ticker, con = con, if_exists = 'replace', index = False)
将新表保存到我的数据库中。
上面的代码在我一个一个地执行时运行良好,但是当我尝试在循环中实现相同的想法时它就会中断,有时在循环的第一个实例上:
for stock in Stocks:
df_new = yahoo_quote(stock)
df_new.to_sql(name = stock_ticker, con = con, if_exists = 'replace', index = False)
我的第一个想法是,不知何故,我的机器/sql 有这么多的调用,所以我尝试添加一个 time.sleep(5) 并确保我从每个实例的内存中删除了所有信息,但没有一个这似乎有效。而且,正如我所说,有时计算机会在第一个循环中中断。
我所说的“中断”是指它只是一直运行而不保存表,通常保存表需要不到 1 秒的时间,但是当这种情况发生时,我可以让它运行 10 分钟以上,它仍然获胜不要保存它。
【问题讨论】:
-
也许可以尝试在
for stock in Stocks:循环中使用上下文管理器,例如 this。 -
如果我理解正确,它将在每个循环上创建(开始)一个新连接,而不仅仅是使用全局连接...我会试一试!谢谢
标签: python mysql pandas sqlalchemy