我想从一个只有文本和数据库连接的查询中批量更新SQLAlchemy中的ORM表。我不能轻易(我相信)反映ORM中的源查询,因为它可能来自一组无限的表。额外的皱纹是我想更新键值HSTORE列(postgres)。我想我可以逐行弄清楚如何做这个,但更喜欢批量UPDATE FROM风格的操作。
为了简单起见:
class Table(Base):
__tablename__= 'table'
id = Column(Integer, primary_key=True)
hstore = Column(MutableDict.as_mutable(HSTORE))
query_to_update_from = 'select id, attr1, attr2 from source_table where id between 1 and 100'
我想用{' attr1':attr1,' attr2':attr2}更新Table.hstore,其中id匹配。我希望任何名为id
的列都能更新hstore。
我知道我可以session.execute('select id, attr1, attr2 from source_table where id between 1 and 100')
轻松获取列名和行数据列表。我可以从中列出字典,但无法弄清楚如何在批量更新中使用它。
我也试过在原始文本查询中创建一个查询()。子查询无济于事,这是可以理解的,因为没有所需的结构。
我很难过!