首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用sqlalchemy将新表保存到MySQL时出错

尝试使用sqlalchemy将新表保存到MySQL时出错
EN

Stack Overflow用户
提问于 2020-09-16 22:57:00
回答 1查看 35关注 0票数 2

嗨,有没有人有什么解决这个问题的办法?

我在本地机器上有一个标准的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:

代码语言:javascript
复制
`df_new = yahoo_quote(stock)`
代码语言:javascript
复制
`df_new.to_sql(name = stock_ticker, con = con, if_exists = 'replace', index = False)`

我的第一个想法是,不知何故,我的机器/sql中有这么多调用,所以我尝试添加一个time.sleep(5),并确保从每个实例的内存中擦除所有信息,但这些似乎都不起作用。而且,正如我所说的,有时计算机在第一次循环时就会崩溃。

所谓“中断”,我的意思是它只是永远运行而不保存表,通常只需要不到1秒的时间来保存一个表,但是当发生这种情况时,我可以让它运行10+分钟,但它仍然不会保存它。

EN

回答 1

Stack Overflow用户

发布于 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'

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63922764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档