SQLAlchemy - 批量更新对象

时间:2016-03-07 18:33:14

标签: python sqlalchemy bulkupdate

我正在尝试使用sqlalchemy进行批量更新。

什么工作,选择要更新的对象,然后在with session.begin_nested():语句中设置属性。但是,实际保存所需的时间很慢。

当我尝试通过session.bulk_save_objectssession.bulk_update_mappings使用批量操作时,我遇到以下异常:

A value is required for bind parameter 'schema_table_table_id' 
[SQL: u'UPDATE schema.table SET updated_col=%(updated_col)s 
 WHERE schema.table.table_id = %(schema_table_table_id)s'] 
 [parameters: [{'updated_col': 'some_val'}]]

看起来bulk_save_objects使用与bulk_update_mappings相同的逻辑路径。

我实际上甚至不了解bulk_update_mappings应该如何工作,因为您提供了更新的值和引用类,但是列表中缺少与这些值关联的主键。这基本上似乎是问题。我尝试使用bulk_update_mappings并提供了用于主键参数的生成的字典键(在我的示例中为schema_table_table_id),它最终被忽略了。如果我改为使用id属性名称,它将更新生成的SQL中的主键,但仍未在where子句中提供所需的参数。

这是使用SQLAlchemy 1.0.12,这是pip上的最新版本。

我怀疑这是一个错误。

0 个答案:

没有答案