Peewee – 创建索引
通过使用Peewee ORM,我们可以定义一个模型,该模型将创建一个带有单列和多列索引的表。
根据字段属性定义,将唯一约束设置为True将在映射字段上创建一个索引。同样,将index=True参数传递给字段构造器也会在指定字段上创建索引。
在下面的例子中,我们在MyUser模型中有两个字段,其中用户名字段的唯一参数设置为True,电子邮件字段的 索引=True。
class MyUser(Model):
username = CharField(unique=True)
email = CharField(index=True)
class Meta:
database=db
db_table='MyUser'
因此,SQLiteStudio图形用户界面(GUI)显示创建的索引如下-
为了定义多列索引,我们需要在我们的模型类定义内的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显示索引定义,如下图所示
索引也可以在模型定义之外建立。
你也可以通过手动提供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)