
- 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 - 建立索引
透過使用 Peewee ORM,可以定義一個模型,該模型將建立一個在單個列以及多個列上建立索引的表。
根據欄位屬性定義,將唯一約束設定為 True 將在對映欄位上建立索引。類似地,將 index=True 引數傳遞給欄位建構函式也會在指定的欄位上建立索引。
在以下示例中,我們在 MyUser 模型中具有兩個欄位,其中 username 欄位的 unique 引數設定為 True,而 email 欄位具有index=True。
class MyUser(Model): username = CharField(unique=True) email = CharField(index=True) class Meta: database=db db_table='MyUser'
結果,SQLiteStudio 圖形使用者介面 (GUI) 顯示建立的索引如下所示:

為了定義多列索引,我們需要在模型類的定義內部的 Meta 類中新增 indexes 屬性。它是一個 2 元素元組的元組,每個元組對應一個索引定義。在每個 2 元素元組中,第一部分是欄位名稱的元組,第二部分設定為 True 以使其唯一,否則為 False。
我們使用如下所示的兩個列唯一索引定義 MyUser 模型:
class MyUser (Model): name=TextField() city=TextField() age=IntegerField() class Meta: database=db db_table='MyUser' indexes=( (('name', 'city'), True), )
相應地,SQLiteStudio 顯示索引定義如下所示:

索引也可以在模型定義之外構建。
您還可以透過手動提供 SQL 輔助語句作為引數傳遞給add_index()方法來建立索引。
MyUser.add_index(SQL('CREATE INDEX idx on MyUser(name);'))
上述方法在使用 SQLite 時特別需要。對於 MySQL 和 PostgreSQL,我們可以獲取 Index 物件並將其與add_index()方法一起使用。
ind=MyUser.index(MyUser.name) MyUser.add_index(ind)
廣告