执行大型查询时SQL Alchemy超时

时间:2018-11-23 14:24:10

标签: mysql sqlalchemy

我有一个很大的查询要通过大约有250万行的SQL Alchemy执行。它正在连接到MySQL数据库。当我这样做时:

transactions = Transaction.query.all()

它最终超时约十分钟。并得到以下错误:sqlalchemy.exc.OperationalError:(pymysql.err.OperationalError)(2013,'在查询过程中丢失了与MySQL服务器的连接')

我尝试在执行create_engine时设置不同的参数,例如:

create_engine(connect_args={'connect_timeout': 30})

我需要更改什么以便查询不会超时?

如果有一种方法可以对结果进行分页并以这种方式进行检查,也可以。

1 个答案:

答案 0 :(得分:0)

通过分页解决:

    page_size = 10000  # get x number of items at a time
    step = 0
    while True:
        start, stop = page_size * step, page_size * (step+1)
        transactions = sql_session.query(Transaction).slice(start, stop).all()
        if transactions is None:
            break
        for t in transactions:
            f.write(str(t))
            f.write('\n')
        if len(transactions) < page_size:
            break
        step += 1
    f.close()