sql炼金术超时

xfb7svmp  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(278)

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

transactions = Transaction.query.all()

它最终会在10分钟左右超时。并获取此错误:sqlalchemy.exc.operationalerror:(pymysql.err.operationalerror)(2013,“查询期间与mysql服务器失去连接”)
我尝试过在创建引擎时设置不同的参数,例如:

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

我需要更改什么以使查询不会超时?
我也会很好,如果有一种方法,分页的结果,并通过他们的方式。

ccgok5k5

ccgok5k51#

通过分页解决:

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

相关问题