1.多对多关系
注意点:(学生课程表)
1.需要在关系属性中添加secondary = 中间表名
2.外键写在中间表中
3.关系属性的编写依赖于外键,如果没有外键,关系属性不能使用
4.lazy:可以设置为dynamic, 可以动态查询(用到的时候查询),默认是子查询(subquery)
2.模板代码
一对多/多对多/自关联一对多/自关联多对多
3.数据库迁移,是通过扩展包,flask_migrate和flask_script来实现的.
操作流程:
1.安装,导入
pip install flask_migrate 提供两个类,Migrate, MigrateCommand
pip install flask_script, 提供了Manager
2.创建Manager对象,关联app
3.使用Migrate类,关联app和db
4.添加一条操作命令MigrateCommand
5.编写操作语句
1.生成迁移文件(一次就好)
python xxx.py db init
2.生成迁移脚本(记录模型类的字段信息)
python xxx.py db migrate -m"版本名(注释)"
3.更新迁移脚本到数据库(upgrade调用的是迁移脚本中的方法)
python xxx.py db upgrade/downgrade [version]
4.查看所有版本号
python xxx.py db history
5.查看最新版本号
python xxx.py db show
注意点:
降级有风险,操作需谨慎
4.蓝图: 是flask中专门用来模块化开发的技术,不需要安装扩展包就可以使用
使用流程:
1. 导入包
from flask import Blueprint
2. 创建蓝图对象
3. 使用蓝图对象,装饰视图函数
4. 将蓝图注册到app中
5.以目录的形式使用蓝图
6.单元测试:和程序员有关的测试,需要我们自己写,一般针对重要模块,而且是大公司.
单元测试中经常用来的知识点是断言(assert).
断言(assert): 一般就用在单元测试,和框架中.
格式:
assert boolean表达式1, 语句A
执行流程:
如果表达式1,为True,继续向后执行
如果表达式1,为False,抛出异常,执行语句A
7.三种搜索方式
1.当前文件搜索
2.当前项目搜索
3.指定目录搜索
ctrl+ shift + f
8.登陆案例,单元测试流程
测试流程:
1.定义类,继承自unittest.TestCast
2.编写测试方法,以test开头
3.获取到测试客户端
client = app.test_client()
4.发送登陆请求,post请求,并且接受响应信息
5.获取到相应信息中的json内容, 解析成字典
6.断言了,字典中必须要包含响应值
9.json和dict之间的相互转换
json字符串:"{name='zhangsan',age=13}"
dict对象: {name='zhangsan',age=13}
1.字典dict转json字符串
json_data = json.dumps(dict_data)
2.json字符串转字典dict
dict_data = json.loads(json_data)
10.
在进行测试案例编写的时候经常使用的两个方法:
setUp: 在测试案例开始的时候就会执行
适合做: 初始化操作,比如:数据库的链接,表的创建,开启测试模式
开启测试模式: app.testing = True, 报错之后会提示具体位置
tearDown: 测试结束的时候会执行该方法
适合做: 收尾工作,比如:关闭流,表的删除,关闭会话
11.测试数据库添加内容的案例;