Peewee 创建索引


通过使用 Peewee ORM,可以定义一个模型,该模型将创建一个具有单列和多列索引的表。

根据 Field 属性定义,将唯一约束设置为 True 将在映射字段上创建索引。同样,将 index=True 参数传递给字段构造函数也会在指定字段上创建索引。

在下面的示例中,我们在 MyUser 模型中有两个字段,用户名字段的唯一参数设置为 True,电子邮件字段具有 指数=真 .

class MyUser(Model):
    username = CharField(unique=True)
    email = CharField(index=True)
    class Meta:
        database=db
        db_table='MyUser'

结果,SQLiteStudio 图形用户界面 (GUI) 显示创建的索引如下:

SQLiteStudio graphical user interface

为了定义多列索引,我们需要在模型类定义中的 Meta 类中添加索引属性。它是 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 显示索引定义如下图:

SQLite Studio My User

索引也可以在模型定义之外构建。

你还可以通过手动提供 SQL 辅助语句作为参数来创建索引 添加索引() method.

MyUser.add_index(SQL('CREATE INDEX idx on MyUser(name);'))

使用 SQLite 时特别​​需要上述方法。对于 MySQL 和 PostgreSQL,我们可以获取 Index 对象并将其与 添加索引() method.

ind=MyUser.index(MyUser.name)
MyUser.add_index(ind)