我正在开发一个Web应用程序,在某些时候,我需要从我的数据库中选择1.000.000行。
我的脚本如下所示:
engine = create_engine(
"mysql://:@localhost/test",
isolation_level="READ UNCOMMITTED",echo=False
)
meta = MetaData(bind=engine)
meta.reflect(bind=engine)
cr = meta.tables['cr']
bl = meta.tables['bl']
DBSession = scoped_session(
sessionmaker(
autoflush=True,
autocommit=False,
bind=engine
)
)
test_query = session.query(bl,cr).filter(bl.c.severity_logged == '4_minor')
print test_query.all()
它不断扫描光盘并增加内存使用量,但没有显示任何内容。
在MySQL命令中,结果将在4秒内返回。 如何使用SQLALchemy检索大量数据?
答案 0 :(得分:1)
您使用SQLAlchemy的方式是要求它为bl
和cr
创建1,000,000多个数据访问对象实例。无论你使用什么语言或构造,这都会很慢。你会更好:
test_query.limit(100).all()
)或