- request
- 文件上传
- 回顾
-
前端
- method = post
- enctype = multipart/form-data
<input type=“file”>
-
服务器端
1.f = request.files[‘name’]
2.f.save(filename)
-
- 回顾
- 文件上传
- 模型 - Models
-
什么是模型
模型 - 根据数据库表结构而创建出来的class
一张表一个类
一个字段就是一个属性 -
模型框架 - ORM
- ORM - Object Relational Mapping
中文名:对象关系映射
简称:ORM,O/RM,O/R Mapping - ORM的三大特征
- 数据表到编程类的映射
- 数据类型的映射
- 关系映射
将数据库中表与表之间的关系 对应到 编程语言中类与类之间的关系
- ORM的优点
- 封装操作提升效率
- 省略庞大的数据访问层
- ORM - Object Relational Mapping
-
Flask中的ORM框架
-
SQLAlchemy
- 安装SQLAlchemy
pip3 install sqlalchemy - Flask 中需要使用flask-sqlalchemy支持包
pip3 install flask-sqlalchemy
查看已安装的包 pip3 list
- 安装SQLAlchemy
-
创建数据库
创建一个 flaskDB 的数据库
create database flaskDB default charset utf8 collate utf8_general_ci; -
Flask中配置数据库
语法:
app.config[‘SQLALCHEMY_DATABASE_URI’]=“mysql://用户名:密码@数据库服务器地址:端口号/数据库名称”示例: app.config[‘SQLALCHEMY_DATABASE_URI’]=“mysql://root:123456@127.0.0.1:3306/flaskDB”
-
-
定义模型类(重点)
- 作用
通过编写模型类的方式,让程序自动生成数据库表
模型类也称为实体类 - 语法
class MODELNAME(db.Model):
__tablename__ = “TABLENAME”
COLUMN_NAME = db.Column(db.TYPE,OPTIONS)- MODELNAME
定义模型类名称,参考表名 - TABLENAME
指定要映射到的表名,如果表不存在的话,则创建表 - COLUMN_NAME
属性名,映射到数据表中就是列名 - TYPE
映射到列的数据类型 - OPTIONS
列选项
- MODELNAME
- 作用
-
db.TYPE 列类型:
类型名 | 数据库 | python | 说明 |
---|---|---|---|
Integer | int | int | |
Float | float | float | |
Numeric | numeric | Decimal | 定点数 |
String | varchar | str | |
Text | text | str | |
Boolean | tinyint | bool | |
Date | date | datetime.date | |
DateTime | datetime | datetime.datetime |
OPTIOINS 列选项
选项名 | 说明 |
---|---|
autoincrement | 如果取值为True,则自增长 |
注意 | 如果列类型为整型,并且是主键的话,默认就是自增长的 |
primary_key | 如果取值为True表示该列为主键 |
unique | 如果取值为True表示该列唯一 |
index | 如果取值为Ture表示该列加索引 |
nullable | 如果设置为True表示该列可为空 |
default | 指定该列默认值 |
- 练习:
- 创建 Student 实体类,表名 student
- id,主键,自增
- sname,姓名,长度为30且不为空字符串
- sage,年龄,整数
- isActive ,启用状态,bool类型,默认为True
- 创建Teacher类,表名 teacher
- id , 主键自增
- tname , 同 sname 一样
- tage ,年龄 ,整数
- 创建Course类,表名 course
- id 2. cname 课程名称,长度30字符串
- 创建 Student 实体类,表名 student
- 数据库迁移
- 什么是数据库迁移
将实体类的改动再映射回数据库 - 依赖于第三方库
- flask-script
安装: pip3 install flask-script
包:flask_script
类:Manager
作用:对项目进行管理
启动项目,为项目增加管理指令 - flask-migrate
安装: pip3 install flask-migrate
包:flask_migrate
类:- Migrate
作用:协调app 和 db 之间的关系 - MigrateCommand
作用:在终端中提供实体类迁移的指令
- Migrate
- python3 run01.py db
- init
作用:执行项目和数据库的初始化操作
特点:一个项目中只执行一次即可 - migrate
作用:将编辑好的实体类生成一个中间文件并保存
特点:只要检测到实体类有更改,就会生成中间文件 - upgrade
作用:将中间文件映射回数据库
- init
- flask-script
- 什么是数据库迁移
-
作业:
参考blog_finally中 register.html 和 release.html
分析数据库模型
通过 register.html 分析用户表(User)有哪些列
通过 release.html 分析文章表(Topic)有哪些列创建数据库 - Blog
创建项目 - Blog
创建实体类 - User,Topic -
数据库工具:
- Navicat for mysql
- PowerDesinger