使用Peewee中的连接删除表中的多个记录?

Dav*_*vid 2 python peewee sql-delete

由于Peewee中的"删除"查询不允许加入,删除table_2中与相关table_1中的特定条件匹配的所有记录的最佳方法是什么?

使用一个简单的例子,我想实现相当于:

  DELETE message.*
  FROM message
  JOIN user ON message.from_user_id = user.id
  WHERE user.name = "Joe";
Run Code Online (Sandbox Code Playgroud)

col*_*fer 7

您应该使用子查询来处理这类事情,例如:

joe = User.select().where(User.username == 'Joe')
Message.delete().where(Message.from_user == joe).execute()
Run Code Online (Sandbox Code Playgroud)

假设您要删除"禁止"用户的所有邮件.你可以写:

banned_users = User.select().where(User.is_banned == True)
Message.delete().where(Message.user.in_(banned_users)).execute()
Run Code Online (Sandbox Code Playgroud)

  • 这是可行的,但我相信问题是如何执行 a: `delete a from a,b where a.field1=b.field2 where ...` 类型的查询 (2认同)