如何在sqlalchemy ORM中进行批量更新

时间:2016-04-04 10:53:52

标签: python sqlalchemy

假设我有一个模型

class Foo(...):
   foo = Column...
   bar = Column...

我有一对t (foo, bar)列表,表示对于Foo,其中foo等于t [0] bar的新值等于t [1]

如何在一个事务中更新多行?

我看到session.bulk_update_mapping,但是从文档来看,我不清楚在哪里为where原因提供论据。

1 个答案:

答案 0 :(得分:1)

I’m inserting 400,000 rows with the ORM and it’s really slow! - Performance — SQLAlchemy 1.1 Documentation(谷歌在“sqlalchemy批量更新”中排名第四)表明ORM不适用于这些 - 以及可行的方法:

  

ORM基本上不适用于高性能批量插件 -   这就是SQLAlchemy除了提供Core之外还提供Core的全部原因   ORM作为一流的组件。

     

对于快速批量插入的用例,SQL生成和   ORM构建在其上的执行系统是Core的一部分。   直接使用这个系统,我们可以生成一个INSERT   与直接使用原始数据库API相比具有竞争力。

     

或者,SQLAlchemy ORM提供批量操作套件   方法,它为工作单元的子部分提供钩子   进程以发出核心级INSERT和UPDATE结构   一小部分基于ORM的自动化。