【问题标题】:SQL Alchemy timing out when executing large query执行大型查询时 SQL Alchemy 超时
【发布时间】:2018-11-29 23:02:15
【问题描述】:

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

transactions = Transaction.query.all()

它最终会超时大约十分钟。并得到这个错误: sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2013, 'Lost connection to MySQL server during query')

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

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

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

如果有办法对结果进行分页并以这种方式浏览它们,我也会很好。

【问题讨论】:

标签: mysql sqlalchemy


【解决方案1】:

通过分页解决:

    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()

【讨论】:

    猜你喜欢
    • 2011-02-18
    • 2021-02-28
    • 1970-01-01
    • 2011-05-03
    • 2021-05-31
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多