我最近從 SQLite 遷移到 MySQL 并開始遭受這種型別的問題。每當我嘗試通過超過 100 000 行的 sqlalchemy 使用 pandas 的 to_sql 時,sqlalchemy 都會崩潰并顯示以下訊息。我從來沒有遇到過這樣的 SQLite 問題(我在沒有 sqlalchemy 的情況下使用它)。在 PyCharm 的 SQL 工具中復制這些表時我沒有任何問題。但是每當我使用 pd.to_sql、sqlalchemy 和 mysql 的組合時,我就會遇到麻煩。
示例代碼
import numpy as np
import pandas as pd
from sqlalchemy import create_engine
table = pd.DataFrame(np.random.rand(1000000, 10))
connection = create_engine(f"mysql mysqlconnector://{user}:{pw}@{host}/{db}")
table.to_sql('TEST', connection, if_exists='replace', index=False)
錯誤資訊
sqlalchemy.exc.OperationalError: (mysql.connector.errors.OperationalError) 2055: Lost connection to MySQL server at '<host>', system error: 32 Broken pipe[<mySQLQuery>]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
無論我使用本地 mysql 資料庫還是云中的資料庫,都會發生這種情況。
uj5u.com熱心網友回復:
此錯誤的最常見原因是服務器超時并關閉了連接。這可能發生在大型資料集上。嘗試使用chunksize:
table.to_sql('TEST', connection, chunksize=1000, if_exists='replace', index=False)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/412602.html
標籤:
上一篇:洗掉一些具有更多條件的行
