我如何使用SQLAlchemy以与普通SQL相同的效率编写带有IN子句的更新查询



我想用SQLAlchemy高效地编写以下SQL查询。

UPDATE item_recs
SET deleted_at = :deleted_at 
WHERE project_id = :project_id
AND item_id IN (1602,1603,1604)

我有一个相应的SQLAlchemy模型ItemRec,其中item_id,project_iddeleted_at作为列。它还有一个id,这是一个自动增加的主键。

另外,我在SQLAlchemy中使用session.execute()方法运行上述查询。现在我只是在IN子句中加入item_ids,并将其与查询的其余部分连接起来。是否有一种方法来构建这个IN子句与占位符像:project_id,而不是使用字符串连接?

你可以做

"UPDATE item_recs SET deleted_at = :deleted_at 
WHERE project_id = :project_id
AND item_id IN :item_ids"
然后使用元组作为item_ids 的值
params = {"item_ids": (1602,1603,1604)}

当然,您将使用params作为会话中的参数。执行(sql, params)以及其中project_id和deleted_at的值

最新更新