Peewee - 创建索引
通过使用 Peewee ORM,可以定义一个模型,该模型将在单列和多列上创建索引表。
根据 Field 属性定义,将唯一约束设置为 True 将在映射字段上创建索引。 同样,将 index=True 参数传递给字段构造函数也会在指定字段上创建索引。
在下面的示例中,我们在 MyUser 模型中有两个字段,username 字段的唯一参数设置为 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 项元组的元组,一个索引定义一个元组。 在每个双元素元组中,第一部分是字段名称的元组,第二部分设置为 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)