Peewee进阶 | 你必须得会的!

简介: Peewee进阶 | 你必须得会的!

前言


接上篇文章,如果我们想要修改表结构或者字段属性该如何操作呢?带着这个问题,今天我们就一起来了解 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
复制代码



以上就是今天的全部内容了,感谢您的阅读,我们下节再会。

相关文章
|
5月前
|
SQL 前端开发 数据库
Python Web开发进阶之路:从模板引擎到ORM的全面掌握
【7月更文挑战第19天】在Python Web开发中,提升技能的关键是理解和运用模板引擎(如Jinja2)与ORM技术。模板引擎,如在Flask中使用的Jinja2,使前端HTML与后端逻辑分离,便于维护。例如,通过路由函数`show_posts()`和`render_template()`呈现文章列表模板,用Jinja2的`for`循环展示内容。ORM,如SQLAlchemy,提供Pythonic的数据库操作,将表映射为类,SQL转化为方法调用。在博客系统中,定义Post模型并与数据库交互,展示了ORM简化数据管理的优势。通过实践这些工具,开发者能更好地驾驭复杂的Web项目。
59 0
|
7月前
|
关系型数据库 数据库 开发者
Python中的Peewee框架:轻量级ORM的优雅之旅
【4月更文挑战第13天】在Python的众多ORM框架中,Peewee以其轻量级、简洁和易于上手的特点,受到了许多开发者的青睐。Peewee的设计理念是“小而美”,它提供了基本的ORM功能,同时保持了代码的清晰和高效。本文将深入探讨Peewee的核心概念、使用场景以及实战应用,帮助读者更好地理解和使用这一框架。
|
SQL 测试技术 数据库
Python:peewee常用操作CRUD
Python:peewee常用操作CRUD
249 0
|
数据库 Python
Flask学习与项目实战5:通过SQLAlchemy连接数据库进行ORM模型的简单增删改查
是对于数据库的ORM的框架,直接操作模型,安装命令为pip install SQLAlchemy。 SQLAlchemy是一个独立的ORMR框架,可以独立于FLASK存在,也可以在Django中使用。 Flask-SQLAlchemy是对SQLAlchemy的一个封装,更适合在flask使用。
Flask学习与项目实战5:通过SQLAlchemy连接数据库进行ORM模型的简单增删改查
|
SQL 数据库
小白入门:什么是CURD?
CRUD是CREATE、READ、UPDATE和DELETE的首字母缩写词,在数据库操作中频繁出现,本文针对小白,如果你已经是开发人员或者对数据库有一定认识的工程师可以默默离开了。让我直接走进CURD的世界。
1392 0
小白入门:什么是CURD?
peewee模块基本使用-ORM
peewee模块基本使用-ORM
149 0
peewee模块基本使用-ORM
|
SQL PHP 数据库
Laravel Eloquent 模型 进阶技巧
Laravel Eloquent 模型使用进阶技巧
150 0
Laravel Eloquent 关联模型 进阶使用技巧
Laravel Eloquent 关联模型 进阶使用技巧
153 0
|
数据库 Python
Peewee入门 | 优雅的ORM框架!
Peewee入门 | 优雅的ORM框架!
545 0
|
SQL Python
Python:Peewee实践记录
Python:Peewee实践记录
167 0

热门文章

最新文章