SQLAlchemy ORM是larga数据的正确选择吗?

时间:2013-10-14 15:44:23

标签: 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 =  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检索大量数据?

1 个答案:

答案 0 :(得分:1)

您使用SQLAlchemy的方式是要求它为blcr创建1,000,000多个数据访问对象实例。无论你使用什么语言或构造,这都会很慢。你会更好:

  • 将数据过滤到合理的数量以显示在屏幕上(例如test_query.limit(100).all()
  • 完全跳过DAO步骤,只将数据流式传输到其端点(在本例中为标准输出)。