代码之家  ›  专栏  ›  技术社区  ›  William Ross

执行大型查询时SQL Alchemy超时

  •  0
  • William Ross  · 技术社区  · 6 年前

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

    transactions = Transaction.query.all()
    

    我尝试过在创建引擎时设置不同的参数,如:

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

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

    1 回复  |  直到 6 年前
        1
  •  0
  •   William Ross    6 年前

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