簡體   English   中英

嘗試使用 sqlalchemy 將新表保存到 MySQL 時出錯

[英]Error trying to save new table to MySQL with sqlalchemy

嗨,有人有解決此問題的任何故障排除想法嗎?

我在本地機器上有一個標准的 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 分鍾以上,但仍然無法保存它。

if_exists= 'replace'選項是在插入新值之前刪除表。 API參考
您的代碼重復刪除並在循環中創建相同的表。
如果要替換所有數據,第一次調用df_new.to_sql set if_exists= 'replace' ,第二次調用 set if_exists= 'append'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM