【问题标题】:Can I use stream_results on SQLAlchemy ORM?我可以在 SQLAlchemy ORM 上使用 stream_results 吗?
【发布时间】:2020-07-09 00:42:52
【问题描述】:

https://docs.sqlalchemy.org/en/13/core/connections.html#sqlalchemy.engine.Connection.execution_options.params.stream_results

如上所述,对于连接或语句,结果可以“流式传输”。

例如

records = connection.execution_options(stream_results=True).execute(
  'select * from large_table'
)
for rec in records:
    process_it(rec)

在支持此选项的 rdb 连接器上,上述命令将根据需要获取行,从而节省内存使用。


现在我有了Session 类,我可以通过它连接数据库和查询对象。

我想执行以下命令,也想“流”行获取。

session = Session()

# I want this to be streamed!
model_objects = session.query(SomeModel).all()

# So that objects gets fetched and initialized "On Demand"
for model_obj in model_objects:
    process(model_obj)

问题:

  • 是否可以针对 ORM 查询应用 stream_results 选项?

【问题讨论】:

    标签: python sqlalchemy


    【解决方案1】:

    对于 stream_results=True 类型的行为,您需要 ORM yield_per(count) 方法。 这在获取非常大的结果集时可以节省内存。

    https://docs.sqlalchemy.org/en/13/orm/query.html#sqlalchemy.orm.query.Query.yield_per

    一次只输出count 行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 2023-02-02
      • 2012-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多