在 SQL 中,子查询(subquery)是嵌入在另一个查询的 WHERE 子句中的查询。可以将子查询实现为一个model.select()作为 外部 model.select() 语句的 where 属性中的参数。
为了演示在 Peewee 中使用子查询,我们使用定义如下模型:
from peewee import *
db = SqliteDatabase('mydatabase.db')
class BaseModel(Model):
class Meta:
database = db
class Contacts(BaseModel):
RollNo = IntegerField()
Name = TextField()
City = TextField()
class Branches(BaseModel):
RollNo = IntegerField()
Faculty = TextField()
db.create_tables([Contacts, Branches])
创建表后,使用如下数据填充:
Contacts 表
contacts 表如下所示:
为了仅显示为 ETC faculty 注册的 RollNo 的联系人表(Contacts 表)中的 name 和 city,以下代码生成一个 SELECT 查询,并在其 WHERE 子句中使用另一个 SELECT 查询。
#this query is used as subquery
faculty=Branches.select(Branches.RollNo).where(Branches.Faculty=="ETC")
names=Contacts.select().where (Contacts.RollNo .in_(faculty))
print ("RollNo and City for Faculty='ETC'")
for name in names:
print ("RollNo:{} City:{}".format(name.RollNo, name.City))
db.close()
执行结果如下:
RollNo and City for Faculty='ETC'
RollNo:103 City:Indore
RollNo:104 City:Nasik
RollNo:108 City:Delhi
RollNo:110 City:Nasik
酷客网相关文章:
评论前必须登录!
注册