Flask框架之SQLAlchemy -orm
一、ORM
- SQL语句重负使用率不高,越复杂的SQL语句条件越多,代码越长。会出现很多相近似的SQL语句
- 很多SQL语句是在业务逻辑中拼出来的,如果有数据库需要修改,就要去修改这些逻辑,很容易漏掉某些SQL语句的修改
- 写SQL时容易忽略web安全问题
- 使用ORM的优点:
- 易用性:使用ORM做数据库的开发可以有效的减少SQL语句,写出来的模型也更加直观
- 性能损耗小
- 设计灵活:可以轻松写出来复杂的查询
- 可移植性:SQLAlchemy封装了底层的数据库,实现支持多个关系型数据库,包括MySQL,SQLite
二、使用SQLAlchemy
- 连接数据库
- 创建Base基类
- 创建类,添加属性,添加数据类型约束
- 创建session
- 添加创建实例添加数据
- 添加数据到数据库
- 提交数据
三、SQLAlchemy数据的增删改查
1.增加数据
def add_data():user = User(添加属性的数据)session.add(user) sesssion.commit()
2.删除数据
def delete_data():date = session.query(Food).first()session.delete(date)session.commit()
3.修改数据
def update_data():data = session.query(Usre).filter(条件判断).all() data.属性名 = xxxsession.commit()
4.查询数据
def search_data():data = session.query(Usre).filter(条件判断).all()print(data)
四、SQLAlchemy的常用类型
代码 | 类型 |
---|---|
Integer | 整形 |
Float | 浮点类型 |
Boolean | 传递True/False进去 |
DECIMAL | 定点类型 |
enum | 枚举类型 |
Date | 传递datetime.date()进去,如(2020 10 29) |
DateTime | 传递datetime.datetime()进去。如(2020 10 29 21 36 21) |
Time | 传递datetime.time()进去。如( 21 36 21) |
String | 字符类型,使用时需要指定长度,区别于Text类型 |
Text | 文本类型 |
LONGTEXT | 长文本类型 |
五、column常用参数和聚合函数
- 常用参数
参数 | 用法 |
---|---|
default | 默认值:当你设置了default=xxx的时候,你如果没有传递这个数据,那么数据库会显示你设置的这个值 |
nullable | 是否可空:nullable=False 表示不能为空 |
primary_key | 是否为主键 |
unique | 是否唯一: 当你设置了这个参数的时候,那么统一列的数据不能相同,相同就报错 |
autoincrement | 是否自动增长 |
onupdate | 更新的时候执行的函数 |
name | 该属性在数据库中的字段映射 |
- 聚合函数
函数 | 意义 |
---|---|
func.count | 统计行的数量 |
func.max | 求最大值 |
func.min | 求最小值 |
func.avg | 求平均值 |
func.sum | 求和 |