- 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 - 约束
约束是对字段中可输入值的限制。其中一种此类约束是主键。当在字段定义中指定 primary_key=True 时,每行只能存储唯一值 - 同一字段的相同值不能在另一行中重复。
如果一个字段不是主键,仍然可以约束它以在表中存储 unique 值。字段构造函数也有约束参数。
以下示例对 age 字段应用 CHECK 约束。
class MyUser (Model): name=TextField() city=TextField() age=IntegerField(constraints=[Check('name<10')]) class Meta: database=db db_table='MyUser'
这将生成以下数据定义语言 (DDL) 表达式 -
CREATE TABLE MyUser ( id INTEGER NOT NULL PRIMARY KEY, name TEXT NOT NULL, city TEXT NOT NULL, age INTEGER NOT NULL CHECK (name < 10) );
因此,如果 age<10 的新行将导致错误。
MyUser.create(name="Rajesh", city="Mumbai",age=9) peewee.IntegrityError: CHECK constraint failed: MyUser
在字段定义中,我们还可以使用 DEFAULT 约束,如下面的 city 字段定义所示。
city=TextField(constraints=[SQL("DEFAULT 'Mumbai'")])
因此,可以使用或不使用 city 的显式值构造模型对象。如果不使用,city 字段将填充默认值 - Mumbai。
广告