Flask学习与项目实战7:一对一关系、管理表的映射与ORM、项目重构

简介: 上篇文章中提到了一对多关系, 也就是一个user对应多篇文章,这是一对多的关系,那么如何设置一对一的关系呢。

上篇文章中提到了一对多关系, 也就是一个user对应多篇文章,这是一对多的关系,那么如何设置一对一的关系呢。

一对一关系

下面还是一对多的关系。

通过更改代码如下即可设置一对一关系。

迁移工具 Flask-Migrate插件

如果上述的模型想要映射到数据库当中,需要进行 db.create_all()函数来进行操作。但是存在一个弊端,如果模型中新增删除了一个字段等,就不能更新处理,即create_all不会处理的。(可能需要重新跑一遍代码?)

首先导入migrate即可,那就是migrate = Migrate(app,db)

首先初始化一个仓库。

然后是第二行命令,这样就会生成一个迁移脚本。

接下来就可以迁移脚本映射到表当中。

初始化动作只需要做一次,只需要最开始做一次就可以了。如果增加了一个新的字段,那么回控制台终端当中,执行 flask db migrate -m “add xxx” 就可以生成了新的迁移脚本了,然后flask db upgrade就可以了。


只需要专心在flask代码层面进行操作就可以了,然后在控制台进行命令控制就很简单了。

项目重构


配置重构

模型、配置都写在一个文件,会比较乱。所以需要进行重构。

在原app文件中将配置文件放在config中,然后在app中导入即可,app.config.from_object(config) 就可以了 。

模型重构

把各种db模型都放在models中。在app中导入刚才移出去的模型。

即: from models import Article,User,UserExtension。

这个时候会报错,因为models中使用了from app import db文件。


一般最开始程序刚运行的时候会最先运行app文件,然后 从app代码的第一行代码执行,结果到from models的时候找到了models文件,但是models又是从app中导入db,所以会造成循环引用。

所以可以把db放在新的.py中。(后续再绑定app)

这个时候model就可以解决问题了。

然后从app中导入db,from exts import db,接着在app中绑定app。

所以现在的关系是这样的:大家都去exts引用导入db。这个时候不存在循环引用了。

相关文章
|
23天前
|
缓存 前端开发 JavaScript
flask各种版本的项目,终端命令运行方式的实现
flask各种版本的项目,终端命令运行方式的实现
|
3月前
|
数据可视化 API 开发者
通俗易懂:一步步教你 Flask 项目自动生成 API 文档
Flasgger,作为一款强大的 Flask 扩展,自动从 Flask 应用中提取并生成 OpenAPI 规范文档,配备 SwaggerUI,为开发者提供了一条快捷通道,让 API 的文档编制和交互式测试变得简单易行。Flasgger 的设计原则是简化开发流程,通过与 Flask 框架的无缝整合,让开发者可以更专注于应用逻辑的构建。
|
6月前
|
前端开发 JavaScript Python
flask 项目目录结构
flask 项目目录结构
97 0
|
8月前
|
存储 前端开发 NoSQL
项目阶段之flask(三)
项目阶段之flask(三)
|
8月前
|
SQL 关系型数据库 MySQL
flask中生成迁移脚本并将orm模型映射至MySQL
flask中生成迁移脚本并将orm模型映射至MySQL
122 0
|
5月前
|
前端开发 JavaScript 数据库
Flask狼书笔记 | 09_图片社交网站 - 大型项目的架构与需求(2)
9.8 收藏图片 前面已经学习过如何使用关联表来表示多对多关系,缺点是只能表示关系,不能存储数据(如我还想记录下收藏图片的时间戳)。这种情况下,我们可以使用关联模型来表示多对多关系。 在关联模型中,我们将Photo模型与User模型的多对多关系,分离成了User模型和Collect模型的一对多关系,和Photo模型与Collect模型的一对多关系。
89 0
|
27天前
|
开发者 索引 Python
Flask环境搭建与项目初始化
【4月更文挑战第15天】本文指导如何搭建Flask开发环境并初始化项目。首先确保安装Python,然后通过pip安装Flask。创建名为`myflaskapp`的项目目录,包含`app.py`入口文件。在`app.py`中初始化Flask应用,定义路由和视图函数。运行`python app.py`启动开发服务器,访问`http://127.0.0.1:5000/`查看结果。完成基本设置后,可按需求扩展应用功能。
|
1月前
|
Python
通过命令行的方式快速创建一个flask项目
通过命令行的方式快速创建一个flask项目
21 0
|
3月前
|
人工智能 前端开发 算法
Python 潮流周刊#18:Flask、Streamlit、Polars 的学习教程
Python 潮流周刊#18:Flask、Streamlit、Polars 的学习教程
38 4
|
5月前
|
存储 前端开发 JavaScript
Flask狼书笔记 | 09_图片社交网站 - 大型项目的架构与需求(1)
9 图片社交网站 本章新涉及的Python包:Flask-Dropzone, Pillow, Flask-Avatars, Whoosh, Flask-Whooshee。 9.1 项目组织架构 1、功能式架构
64 0