如何使用 Peewee 进行 CASE SQL 查询?
How to use Peewee to make CASE SQL queries?
我在 postgres 中有一个 table,它为每一行保存一个优先级整数。
每当我添加新行或更改 table.
中所有其他行的现有行的优先级时,优先级都需要更新
在纯 SQL 中执行此操作的一种方法是使用 CASE 查询:
# example of editing priority 5 to 2 and fixing the rest
set Priority = case when Priority = 5 then 2
when Priority > 1 then Priority + 1
else Priority
end
问题:如何使用python中的peewee ORM来方便查询?
我在文档中找不到执行此操作的方法。尽管文档提供了一些很好的示例,但我的用例不适合任何一个示例。
您可以使用 peewee.Case
(文档:http://docs.peewee-orm.com/en/latest/peewee/api.html#Case)。它有据可查。
class Task(Model):
priority = IntegerField()
q = Task.update(priority=Case(None, (
(Task.priority == 5, 2),
(Task.priority > 1, Task.priority + 1)),
Task.priority)
q.execute()
我在 postgres 中有一个 table,它为每一行保存一个优先级整数。 每当我添加新行或更改 table.
中所有其他行的现有行的优先级时,优先级都需要更新在纯 SQL 中执行此操作的一种方法是使用 CASE 查询:
# example of editing priority 5 to 2 and fixing the rest
set Priority = case when Priority = 5 then 2
when Priority > 1 then Priority + 1
else Priority
end
问题:如何使用python中的peewee ORM来方便查询?
我在文档中找不到执行此操作的方法。尽管文档提供了一些很好的示例,但我的用例不适合任何一个示例。
您可以使用 peewee.Case
(文档:http://docs.peewee-orm.com/en/latest/peewee/api.html#Case)。它有据可查。
class Task(Model):
priority = IntegerField()
q = Task.update(priority=Case(None, (
(Task.priority == 5, 2),
(Task.priority > 1, Task.priority + 1)),
Task.priority)
q.execute()