[英]Deleting multiple records in a table using join in Peewee?
由於Peewee中的“刪除”查詢不允許加入,刪除table_2中與相關table_1中的特定條件匹配的所有記錄的最佳方法是什么?
使用一個簡單的例子,我想實現相當於:
DELETE message.*
FROM message
JOIN user ON message.from_user_id = user.id
WHERE user.name = "Joe";
您應該使用子查詢來處理這類事情,例如:
joe = User.select().where(User.username == 'Joe')
Message.delete().where(Message.from_user == joe).execute()
假設您要刪除“禁止”用戶的所有郵件。 你可以寫:
banned_users = User.select().where(User.is_banned == True)
Message.delete().where(Message.user.in_(banned_users)).execute()
如果您正在使用Postgresql,則可以使用帶有USING
子句的原始查詢
name_to_delete = 'Joe'
query = Message.raw("""
DELETE FROM message
USING user
WHERE
message.from_user_id = user.id AND
user.name = %s
""", name_to_delete)
query.execute()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.