我正在运行一个 6 分钟长的读取查询。
source_connection = source_db_connection.connect().execution_options(stream_results=True, max_row_buffer=1000)
for df_from_db in pd.read_sql_query(raw_data_query_pandas, source_db_connection, params=(...), chunksize=1000)
并出现以下错误:
Exception during reset or similar
Traceback (most recent call last):
File "%PATH%\venv\lib\site-packages\sqlalchemy\pool\base.py", line 986, in _finalize_fairy
fairy._reset(
File "%PATH%\venv\lib\site-packages\sqlalchemy\pool\base.py", line 1432, in _reset
pool._dialect.do_rollback(self)
File "%PATH%\venv\lib\site-packages\sqlalchemy\engine\default.py", line 692, in do_rollback
dbapi_connection.rollback()
File "%PATH%\venv\lib\site-packages\mysql\connector\connection_cext.py", line 538, in rollback
self._cmysql.rollback()
_mysql_connector.MySQLInterfaceError: Lost connection to MySQL server during query
尝试连接参数:pool_recycle=240,pool_pre_ping=True,poolclass=NullPool
我将逻辑更改为:
for df_from_db in pd.read_sql_query(raw_data_query_pandas, source_connection, params=(...), chunksize=1000):
df_from_db.to_csv(filename, index=False, mode='a', header=False)
错误就消失了。