SQLAlchemy查询结果超时

时间:2013-10-14 08:37:21

标签: python mysql sql extjs sqlalchemy

我正在开发一个Extjs 4应用程序,我使用从GUI发送的参数执行查询(文本框,组合框值等)。 该查询是使用SQLAlchemy构建的。我在localhost上使用MySQL数据库。

我执行的查询意味着返回大数据。我的问题是当我直接在HeidiSQL上执行查询时它会在0.6秒内执行,但是使用Extjs(在chrome上)会产生超时并且没有显示结果。

这是查询。当我执行它时,它应该返回300.000行。

SELECT  /*ALL OF THE COLUMNS OF MY TWO TABLES, GENERATED DYNAMICALLY WITH SQLAlchemy*/
FROM bl, `CR`
WHERE `CR`.`Category` IN ('Failure') AND bl.severity_logged IN ('4_minor') AND bl.product_logged = 'x' AND bl.`productRelease_logged` IN ('0.1', '6.2', '6.4', '6.7');

可能是什么问题? 这是浏览器缓存问题吗?

编辑:这是我的Python脚本w / SQLAlchemy。

engine = create_engine(
             "mysql://:@localhost/test",
             isolation_level="READ UNCOMMITTED"
        )
meta = MetaData(bind=engine)
meta.reflect(bind=engine)
cr =  meta.tables['cr']
bl = meta.tables['bl']

session = create_session(bind=engine)
...#I create filters based on the GUI values
test_query = session.query(metric_table_object,cr).filter(all_filters) #I then create the query
result_dict = [u.__dict__ for u in test_query.all()] #I store the query result into a dict
print result_dict

1 个答案:

答案 0 :(得分:0)

作为zzzeek comments,加载300,000个结果对象可能会占用太多内存。也许您可以使用像Windowed Range Query这样的策略来处理数据块? This post on the SqlAlchemy mailing list还有一些有用的细节,可以将结果切成块。