- 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 - 过滤器
可以使用 where 子句从 SQLite 表中检索数据。Peewee 支持以下逻辑运算符列表。
== | x 等于 y |
< | x 小于 y |
<= | x 小于或等于 y |
> | x 大于 y |
>= | x 大于或等于 y |
!= | x 不等于 y |
<< | x IN y,其中 y 是列表或查询 |
>> | x IS y,其中 y 为 None/NULL |
% | x LIKE y 其中 y 可以包含通配符 |
** | x ILIKE y 其中 y 可以包含通配符 |
^ | x 异或 y |
〜 | 一元否定(例如 NOT x) |
以下代码显示年龄 >=20 的姓名:
rows=User.select().where (User.age>=20) for row in rows: print ("name: {} age: {}".format(row.name, row.age))
以下代码仅显示名称列表中存在的名称。
names=['Anil', 'Amar', 'Kiran', 'Bala'] rows=User.select().where (User.name << names) for row in rows: print ("name: {} age: {}".format(row.name, row.age))
Peewee 生成的 SELECT 查询将是 -
('SELECT "t1"."id", "t1"."name", "t1"."age" FROM "User" AS "t1" WHERE ("t1"."name" IN (?, ?, ?, ?))', ['Anil', 'Amar', 'Kiran', 'Bala'])
结果输出如下 -
name: Amar age: 20 name: Kiran age: 19
过滤方法
除了核心 Python 中定义的上述逻辑运算符之外,Peewee 还提供以下过滤方法 -
先生编号 | 方法与说明 |
---|---|
1 | .in_(值) IN 查找(与 << 相同)。 |
2 | .not_in(值) 不在查找中。 |
3 | .is_null(is_null) IS NULL 或 IS NOT NULL。接受布尔参数。 |
4 | .包含(子字符串) 子字符串的通配符搜索。 |
5 | .startswith(前缀) 搜索以前缀开头的值。 |
6 | .endswith(后缀) 搜索以后缀结尾的值。 |
7 | .之间(低,高) 搜索低值和高值之间的值。 |
8 | .regexp(exp) 正则表达式匹配(区分大小写)。 |
9 | .iregexp(exp) 正则表达式匹配(不区分大小写)。 |
10 | .bin_and(值) 二进制与。 |
11 | .bin_or(值) 二元或。 |
12 | .concat(其他) 使用 || 连接两个字符串或对象。 |
13 | 。清楚的() 将列标记为 DISTINCT 选择。 |
14 | .整理(整理) 指定具有给定排序规则的列。 |
15 | .cast(类型) 将列的值转换为给定类型。 |
作为上述方法的示例,请查看以下代码。它检索以“R”开头或以“r”结尾的名称。
rows=User.select().where (User.name.startswith('R') | User.name.endswith('r'))
等效的 SQL SELECT 查询是:
('SELECT "t1"."id", "t1"."name", "t1"."age" FROM "User" AS "t1" WHERE (("t1"."name" LIKE ?) OR ("t1"."name" LIKE ?))', ['R%', '%r'])
备择方案
Python 的内置运算符 in、not in、and、or 等将不起作用。相反,请使用 Peewee 替代品。
您可以使用 -
.in_() 和 .not_in() 方法而不是 in 和 not in 运算符。
& 而不是 and。
| 而不是或。
〜而不是不。
.is_null() 而不是 is。
无或 == 无。