上一级讲了怎么对项目文件做一个基本的拆分,以及同步数据库中可能会出现的问题,这一节以讲解思路为主,技术性内容较少
在本篇文章开始之前,先在这里对上一节的一个细节做一个补充说明,上一节为什么讲完文件的拆分后又来同步数据库呢,这个是因为在整理完基本的结构布局之后,接下来就是创建数据库模型,然后开始编写页面的接口等其他的逻辑代码,而编写其他逻辑代码的时候,如果连数据库模型都还没有创建,那么在开发过程中,就不方便测试了,因此需要先创建数据库,所以这个时候同步数据库就比较合理且规范了,在这里小编并不是说这个顺序一定是最标准,最合理的,但是这个也是相对比较规范的
好了,补充说明的就到这里了,下面是这次的内容
项目目录 |--- __pycache__ (这个目录用于存放编译后的python字节码文件,以‘.pyc’为后缀名) |--- .vscode (用于调试项目的目录) |--- migrations (同步数据库的迁移目录) |--- __pycache__ |--- versions (存放数据库的历史版本) |... (其他文件) |--- stu_mng (项目的主目录,项目后面的编写都在这个目录中进行) |--- __pycache__ |--- student (编写学生模块的目录,和学生相关的功能在这下面编写) |--- __pycache__ |--- __init__ (在这个文件中创建蓝图对象) |--- models.py (在这个文件中编写学生相关的模型) |--- views.py (在这个文件中编写学生相关的视图) |--- ...... (后续的其他业务模块目录) |--- __init__.py (包的初始化文件) |--- public_model.py (项目的公共模型,在这个文件中编写整个项目都通用的一些基础模型) |--- config.py (项目的配置文件) |--- manager.py (管理文件,相当于项目的入口文件,项目从这里启动) |--- README.txt (项目的说明文件,相当于说明书) |--- request.http (接口测试文件,用来测试项目中的各个接口)
这个是本次编写后的最新结构
这个项目开发到这里,整体的项目结构按功能划分的话,是基本上不会再出现新的文件了,说到项目结构的划分,这里简单提一下,项目结构的划分按小的分类有按业务逻辑分类和按代码功能分类两种,按大的分类有MTV架构和MCV架构两种,对这个不清楚的可以上网去搜,小编这里按小的分类属于按业务逻辑划分类型的,按大的分类属于MCV架构
下面来说一下这次拆分的思路,也就是这次出现的新目录和新文件,为什么会创建
在拆分思路分析完之后,再说一下基本的数据库模型的创建
既然要创建模型,就肯定需要操作模型,那么因为是在python中操作数据库,所以需要使用SQLAlchemy模块,但是这里用的是flask 框架,所以需要下载的模块是flask-sqlalchemy
# 使用这个命令就可以下载 pip install flask-sqlalchemy
# 学生模型 class Student(db.Model,Time): __tablename__ = 'students' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(32), nullable=False, unique=True) s_id = db.Column(db.String(16), nullable=False, unique=True) phone = db.Column(db.String(11), nullable=False, unique=True) gender = db.Column(db.String(4), nullable=False) age = db.Column(db.Integer, nullable=False) faculties = db.Column(db.String(128), nullable=False) profession = db.Column(db.String(128), nullable=False) class_ = db.Column(db.String(128), nullable=False)
这个模型只是一个很基础的模型,所以就简单的说一下各个关键字(这一块适合刚学sqlalchemy的新手)
__tablename__ = 'xxx',这个是模型映射到数据库中的名字,也就是表名
db.Column,通过对象的这个关键字创建字段
db.Integer,通过这个关键字设置字段的数据类型为整数类型
db.String(),通过这个关键字设置字段的数据类型为字符串类型,后面的括号是设置字段的长度,必填
primary_key=True,设置字段为主键,在一个模型或者一个表中只能有一个字段设置主键
autoincrement=True,设置字段自增长,默认值为False
nullable=False,设置字段不能为空,默认值为True
补充:(这个参数如果记不清是允许还是不允许,可以这么记忆,null表示空,able表示允许,连在一起就是允许为空,所以如果设置为True就是允许为空,False就是不允许为空)
unique=True,设置字段的数据是唯一的,默认值为False
模型中继承的两个对象,db是小编在其他文件中创建的sqlalchemy对象,Time是一个公共的基础类
在项目中,他的调试不同于平时学习的单个文件,单个文件可以直接调试,在这里,不管你是想测试哪一段代码,都必须运行整个项目,也就是打开并执行项目的启动文件,那么就会很麻烦,因此可以点击图中的 ‘ create a launch.json file ’ 这行文字,创建这个文件,然后系统就会自动创建这个目录,并在目录中创建这个调试文件,然后不管在哪个文件中,都可以启动项目进行调试
搜索图中这个插件下载即可,按照插件上的教程,创建相应的文件,在文件中编写调试代码即可对接口进行调试
以上就是这次关于进一步拆分文件的思路和创建数据库模型的简单解说,都说程序员经常熬夜写代码,修改bug什么的,小编现在还没有成为程序员,就已经开始在为这个文章熬夜了,嘿嘿嘿,小编都那么辛苦了,就麻烦路过的朋友点个赞,收藏一下,顺便在加个关注,哈哈哈