- Peewee 教程
- Peewee - 主页
- Peewee - 概述
- Peewee - 数据库类
- Peewee - 模型
- Peewee - 字段类
- Peewee - 插入一条新记录
- Peewee - 选择记录
- Peewee - 过滤器
- Peewee - 主键和复合键
- Peewee - 更新现有的记录
- Peewee - 删除记录
- Peewee - 创建索引
- Peewee - 约束
- Peewee - 使用 MySQL
- Peewee - 使用 PostgreSQL
- Peewee - 动态定义数据库
- Peewee - 连接管理
- Peewee - 关系和联接
- Peewee - 子查询
- Peewee - 排序
- Peewee - 计数和聚合
- Peewee - SQL 函数
- Peewee - 检索行元组/字典
- Peewee - 用户定义运算符
- Peewee - 原子事务
- Peewee - 数据库错误
- Peewee - 查询生成器
- Peewee - 与 Web 框架的集成
- Peewee - SQLite 扩展
- Peewee - PostgreSQL 和 MySQL 扩展
- Peewee - 使用 CockroachDB
- Peewee 有用资源
- Peewee - 快速指南
- Peewee - 有用资源
- Peewee - 讨论
Peewee - 子查询
在 SQL 中,子查询是另一个查询 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])
创建表后,我们用以下示例数据填充它们 -
联系人表
联系人表如下 -
为了仅显示已为 ETC 教员注册 RollNo 的联系人表中的姓名和城市,以下代码生成一个 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
广告