前言
接上篇文章,如果我们想要修改表结构或者字段属性该如何操作呢?带着这个问题,今天我们就一起来了解 peewee
的进阶操作。
关于 playhouse
peewee
有很多的扩展,这些扩展都集中收录在 playhouse
中,例如支持多线程的 SqliteQueueDatabase
,支持 migration
,今天我们主要就数据库同步进行介绍。
实例
现存的数据库结构如下:
网络异常,图片无法展示
|
添加列
# 实例化migrate对象 mgrt = SqliteMigrator(db) # 定义数据类型 home_filed = CharField(max_length=10,null=True) # 执行migrate migrate( # 添加列 mgrt.add_column(table='people',column_name='home',field=home_filed), ) 复制代码
网络异常,图片无法展示
|
刪除列
# 实例化migrate对象 mgrt = SqliteMigrator(db) # 定义数据类型 home_filed = CharField(max_length=10,null=True) # 执行migrate migrate( # 添加列 # mgrt.add_column(table='people',column_name='home',field=home_filed), # 删除列 mgrt.drop_column(table='people',column_name='people_status'), ) 复制代码
网络异常,图片无法展示
|
重命名列
# 实例化migrate对象 mgrt = SqliteMigrator(db) # 定义数据类型 home_filed = CharField(max_length=10,null=True) # 执行migrate migrate( # 添加列 # mgrt.add_column(table='people',column_name='home',field=home_filed), # 删除列 # mgrt.drop_column(table='people',column_name='people_status'), # 重命名列 mgrt.rename_column(table='people',old_name='name',new_name='people_name') ) 复制代码
网络异常,图片无法展示
|
重命名后一定记得修改数据模型中的列名。
新的数据模型
class people(Model): # 默认会有ID作为主键自增 people_name = CharField() birth = DateField() #people_status = BooleanField(default=True) home = CharField(max_length=10,null=True) class Meta: database = db 复制代码
设置不为空属性
# 实例化migrate对象 mgrt = SqliteMigrator(db) # 给home值 pps = people.select() for i in pps: i.home='china' i.save() # 执行migrate migrate( # 添加列 # mgrt.add_column(table='people',column_name='home',field=home_filed), # 删除列 # mgrt.drop_column(table='people',column_name='people_status'), # 重命名列 # 重命名后一定记得修改数据模型中的列名 # mgrt.rename_column(table='people',old_name='name',new_name='people_name') # 设置(不)为空 # @@@ 因为初始的home是可以为空的,且数据库中的数据home是空 # @@@ 所以要先给home给值,然后才能设置不为空的属性,否则会报错 mgrt.add_not_null(table='people',column='home') ) 复制代码
网络异常,图片无法展示
|
网络异常,图片无法展示
|
设置可为空
mgrt.drop_not_null(table='people',column='home') 复制代码
网络异常,图片无法展示
|
重命名表名
同修改列名,修改表名后记得同步修改数据模型。
mgrt.rename_table(old_name='people', new_name='people_v2') 复制代码
网络异常,图片无法展示
|
索引的增删
增加索引
mgrt.add_index(table='people_v2',columns='id',unique=True) ) 复制代码
网络异常,图片无法展示
|
删除索引
# 索引名为{表名_列名} mgrt.drop_index(table='people_v2',index_name='people_v2_id') 复制代码
网络异常,图片无法展示
|
更多内容详见:
http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#schema-migrations 复制代码
以上就是今天的全部内容了,感谢您的阅读,我们下节再会。