从文本查询结果/ResultProxy或di在SQLAlchemy中进行大容量更新

2024-05-23 20:52:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从一个只有文本和数据库连接的查询中批量更新SQLAlchemy中的ORM表。我不容易(我相信)在ORM中反映源查询,因为它可能来自无限的表集。额外的问题是我想更新一个键值HSTORE列(postgres)。我想我可以一行一行地解决这个问题,但是我更喜欢从样式操作中进行批量更新。在

为了简单起见:

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'

我想更新Table.hs存储在id匹配的地方使用{'attr1':attr1,'attr2':attr2}。我希望任何未命名为id的列更新hstore。在

我知道我可以做session.execute('select id, attr1, attr2 from source_table where id between 1 and 100')并很容易地获得列名和行数据的列表。我可以从中列出一个字典列表,但不知道如何在批量更新中使用它。在

我也尝试过在原始文本查询之外创建一个query().subquery,但是没有用,这是可以理解的,因为没有所需的结构。在

我在这一点上被难住了!在


Tags: from文本idsourceormtablecolumnhstore