Python SQLAlchemy ORM是larga数据的正确选择吗?
我正在开发一个web应用程序,在某个时候,我需要从数据库中选择1.000.000行 我的脚本如下所示:Python SQLAlchemy ORM是larga数据的正确选择吗?,python,sql,performance,sqlalchemy,Python,Sql,Performance,Sqlalchemy,我正在开发一个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 =
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检索大量数据?您使用SQLALchemy的方式是要求它为
bl
和cr
创建1000000多个数据访问对象实例。这将是缓慢的,无论你用什么语言或结构来做这件事。你最好是:
- 将数据过滤到屏幕上显示的合理数量(例如
)或test\u query.limit(100).all()
- 完全跳过DAO步骤,将数据流式传输到其端点(在本例中为标准输出)
bl
和cr
创建1000000多个数据访问对象实例。这将是缓慢的,无论你用什么语言或结构来做这件事。你最好是:
- 将数据过滤到屏幕上显示的合理数量(例如
)或test\u query.limit(100).all()
- 完全跳过DAO步骤,将数据流式传输到其端点(在本例中为标准输出)
引擎上创建一个连接,然后cursor=conn.execute(“SQL HERE”)
然后打印cursor.fetchall()
。DAO是什么?我不明白你的第二句话solution@user1734229-数据访问对象。在第二种情况下,您只需在引擎上创建一个连接,然后cursor=conn.execute(“SQL HERE”)
然后打印cursor.fetchall()
。