我想用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_id
和deleted_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的值