我正在开发一个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
答案 0 :(得分:0)
作为zzzeek comments,加载300,000个结果对象可能会占用太多内存。也许您可以使用像Windowed Range Query这样的策略来处理数据块? This post on the SqlAlchemy mailing list还有一些有用的细节,可以将结果切成块。