数据库是一个网站的基础。 Flask 可以使用很多种数据库。比 如 MySQL , MongoDB , SQLite , PostgreSQL 等。这里我们以 MySQL 为例进行讲解。而 在 Flask 中,如果想要操作数据库,我们可以使用 ORM 来操作数据库,使用 ORM 操作数据库将 变得非常简单
在Flask操作数据库之前 需要安装这几个操作库
pip install pymysql
pip install SQLAlchemy
SQLAlchemy : SQLAlchemy 是一个数据库的 ORM 框架
对象关系映射 是用来描述对象和数据库之间映射的一种方式
ORM的好处
更加规范SQL 不需要手写SQL DB工程师
更加直观的数据关系 ---->对象 方便建模
可以屏蔽不同数据库直接的差异
ORM怎么理解
将表映射成class
将表中的数据 映射成Class的实例对象
要使用 ORM 来操作数据库,首先需要创建一个类来与对应的表进行映射。现在以 User表 来做为 例子,它有 自增长的id 、 name 、 fullname 、 password 这些字段,那么对应的类为:
先用一个伪代码 演示一下
那么这样 操作数据库 就会像操作类那样 轻松了 上面的是理清思路的伪代码 不作为执行
字段的数据类型
字段的数据类型 只能是sqlalchemy提供的类型 所以需要导入sqlalchemy下的Column类来指定数据类型
Column 类的参数:
- 第一个参数:是数据类型 Integer 是整型 String 是字符类型
- primary_key:是否为主键
- nullable:是否为空
- autoincrement:是否自增长
- default :默认值
- unique :是否唯一
开始创建数据表
创建表的ORM模型就写好了 运行一下
需要注意:使用metadata.create_all() 创建表以后 后续再添加更改表字段 也不会再映射了
sqlalchemy常用数据类型
Integer :整形。 Float :浮点类型。 Boolean :传递 True/False 进去。 DECIMAL :定点类型。 enum :枚举类型。 Date :传递 datetime.date() 进去。 DateTime :传递 datetime.datetime() 进去。 Time :传递 datetime.time() 进去。 String :字符类型,使用时需要指定长度,区别于 Text 类型。 Text :文本类型。 LonGTEXT :长文本类型
构建Session对象
1、需要先构建session对象 所有的数据库的ORM操作都必须通过 叫Session的会话对象来实现 通过以下代码来获取会话对象