Peewee - 约束
约束是对可以放入字段中的可能值施加的限制。 其中一个约束是主键。 当在字段定义中指定primary_key=True时,每行只能存储唯一值——字段的相同值不能在另一行中重复。
如果一个字段不是主键,仍然可以限制它在表中存储唯一值。 字段构造器也有约束参数。
以下示例对 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 'Shanghai'")])
因此,模型对象可以在有或没有 city 的显式值的情况下构建。 如果不使用,city 字段将填入默认值——Shanghai。