假设我有一个模型
class Foo(...):
foo = Column...
bar = Column...
我有一对t (foo, bar
)列表,表示对于Foo
,其中foo等于t [0] bar
的新值等于t [1]
如何在一个事务中更新多行?
我看到session.bulk_update_mapping
,但是从文档来看,我不清楚在哪里为where
原因提供论据。
答案 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的自动化。