gpt4 book ai didi

python - 是否可以使用 peewee python ORM 在多个字段上进行 sql 连接?

转载 作者:太空狗 更新时间:2023-10-30 02:19:31 35 4
gpt4 key购买 nike

假设我们有这三个模型。

class Item(BaseModel):
title = CharField()

class User(BaseModel):
name = CharField()

class UserAnswer(BaseModel):
user = ForeignKeyField(User, 'user_answers')
item = ForeignKeyField(Item, 'user_answers_items')
answer = ForeignKeyField(Item, 'user_answers')

我想获取所有没有当前用户相关UserAnswer记录的Items。在 SQL 中,它将是这样的:

select * from item i
left join useranswer ua on ua.item_id=i.id and ua.user_id=1
where ua.id is null;

是否可以使用 peewee 语法对两个字段进行左外连接约束?如果我能以这种方式做到这一点,那就太酷了:

Item.select().join(UserAnswer, JOIN_LEFT_OUTER, on=['__my_constraints_here__']).where(
(UserAnswer.id.is_null(True))
)

最佳答案

是的,您可以在多个条件下加入:

join_cond = (
(UserAnswer.item == Item) &
(UserAnswer.user == 1))
query = (Item
.select()
.join(
UserAnswer,
JOIN.LEFT_OUTER,
on=join_cond))
.where(UserAnswer.id.is_null(True)))

此处的文档:http://docs.peewee-orm.com/en/latest/peewee/api.html#Query.join

抱歉,没有使用多个连接条件的示例,但是 on 只是一个任意表达式,因此您可以在此处放置您喜欢的任何有效的 peewee“表达式”。

重要提示:您应该导入 JOIN - from peewee import JOIN

关于python - 是否可以使用 peewee python ORM 在多个字段上进行 sql 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29244434/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com