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。

廣告