嗨,有没有人有什么解决这个问题的办法?
我在本地机器上有一个标准的python-sql连接:
from sqlalchemy import create_engine
engine = create_engine("mysql+pymysql://root:*******@localhost/my_DB")
con = engine.connect()
这个数据库由200+表组成,我在其中存储股票/市场信息,我需要每天更新它,为此,我通常构造一个遍历所有表的循环,以便使用pandas datareader从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+分钟,但它仍然不会保存它。
发布于 2020-09-17 05:16:23
if_exists= 'replace'选项是在插入新值之前删除该表。API reference
您的代码在循环中重复drop和create same Table。
如果要替换所有数据,第一次调用df_new.to_sql set if_exists= 'replace',第二次调用set if_exists= 'append'。
https://stackoverflow.com/questions/63922764
复制相似问题