python - mysql 服务器在使用 pd.read_sql() 获取大量数据集时失去连接
问题描述
pd.read_sql()
在查询形成之前,使用连接(由 SQLAlchemy 引擎创建)从 MySQL 数据库中获取大约 890 000 行,每行有 60-65 列。有没有其他方法可以优化获取这么多的数据,因为我确实需要所有的行和列,并且我想摆脱异常。
这是一个代码片段:
import pandas as pd
def read_outputs(engine):
data = dict()
with engine.connect() as conn:
data['tbl_1']= pd.read_sql('tbl_1',con=conn).to_json()
data['tbl_2']= pd.read_sql('tbl_2',con=conn).to_json()
data['tbl_3']= pd.read_sql('tbl_3',con=conn).to_json()
engine.dispose()
return {'data':data}
解决方案
使用“SET GLOBAL connect_timeout”属性增加默认超时
conn.query('SET GLOBAL connect_timeout="<desired time>")
您还可以在创建引擎时将超时设置为:
create_engine(db_url, connect_args={'connect_timeout': <desired time>})
推荐阅读
- python - Django 服务器永久运行
- scala - 从嵌套案例类中提取地图
- java - 在 spring data jpa 中为不同的存储库定义不同的批处理大小
- gradle - Java-gradle-plugin validatePlugins 任务
- arrays - 在matlab中写入文件夹名称的正确方法
- gtk - 使用GTK库时,显示窗口和隐藏窗口容易崩溃
- python - AttributeError:模块“tensorflow.python.ops.rnn_cell_impl”没有属性“_linear”
- sql - SQL 模式不会与 postgres 一起运行?
- php - PayPal 没有向听众发送 IPN
- swift - 额外的 CGpoint 不应该保留在屏幕上