【问题标题】:SQLAlchemy is there a way to Returning result after Delete executionSQLAlchemy 有没有办法在删除执行后返回结果
【发布时间】:2017-11-29 07:40:49
【问题描述】:

我找不到关于 Returning 子句的等效解决方案

DELETE FROM items
WHERE sub_item_id IN %(sub_item_ids)s
RETURNING item_id, sub_item_id, 

我在 SQLAlchemy 中做了这个:

purge_family = session.query(ItemItem).filter(ItemItem.sub_item_id.in_(sub_item_ids))

.delete(synchronize_session=False)

我需要在执行DELETE语句时返回item_id、sub_item_id。

【问题讨论】:

  • 出于兴趣,你为什么需要那个?
  • 因为我需要知道 (PosgreSql) 删除了多少项。例如,我有 10 个项目的列表,之后它只会删除 4 个项目。然后我继续进行其他治疗
  • 但是Query.delete() 已经返回匹配行数。
  • 是的,计数不是我需要返回的值
  • 我仍然怀疑这是XY problem。假设“其他处理”以某种方式取决于已删除行的 id?

标签: python sql python-2.7 sqlalchemy


【解决方案1】:

要按原样执行查询,请使用核心构造:

stmt = ItemItem.__table__.delete().\
    where(ItemItem.sub_item_id.in_(sub_item_ids)).\
    returning(ItemItem.item_id, ItemItem.sub_item_ids)

results = session.execute(stmt).fetchall()

【讨论】:

    猜你喜欢
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 2015-07-19
    • 2022-12-29
    相关资源
    最近更新 更多