Flask模型
1. Flask模型
Flask默认并没有提供任何数据库操作的API
我们可以选择任何适合自己项目的数据库来使用
Flask中可以自己的选择数据,用原生语句实现功能,也可以选择ORM(SQLAlchemy,MongoEngine)
SQLAlchemy是一个很强大的关系型数据库框架,支持多种数据库后台。SQLAlchemy提供了高层ORM,也提供了使用数据库原生SQL的低层功能。
ORM:
1 | 将对对象的操作转换为原生SQL |
针对于Flask的支持,官网地址
1 | pip install flask-sqlalchemy |
安装驱动
1 | pip install pymysql |
2.定义模型
使用SQLALchemy的对象去创建字段
其中__tablename__
指定创建的数据库的名称
1 | 创建models.py文件, 其中定义模型 |
其中:
Integer表示创建的s_id字段的类型为整形,
primary_key表示是否为主键
String表示该字段为字符串
unique表示该字段唯一
default表示默认值
autoincrement表示是否自增
3. 创建数据表
在视图函数中我们引入models.py中定义的db
1 | from App.models imprt db |
其中: db.create_all()表示创建定义模型中对应到数据库中的表
db.drop_all()表示删除数据库中的所有的表
4. 初始化SQLALchemy
在定义的init.py文件中使用SQLALchemy去整合一个或多个Flask的应用
有两种方式:
1 | 第一种: |
5. 配置数据库的访问地址
数据库连接的格式:
1 | dialect_driver://username:password@host:port/database |
例子: 访问mysql数据库,驱动为pymysql,用户为root,密码为123456,数据库的地址为本地,端口为3306,数据库名称HelloFlask
设置如下: “mysql+pymysql://root:123456@localhost:3306/HelloFlask”
在初始化init.py文件中如下配置:
1 | app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:123456@localhoust:3306/HelloFlask" |
6.对学生数据进行CRUD操作
语法:
1 | 类名.query.xxx |
获取查询集:
1 | all() |
数据操作:
1 | 在事务中处理, 数据插入 |
6.1向学生表中添加数据
1 | @blue.route('/createstu/') |
提交事务, 使用commit提交我们的添加数据的操作
6.2获取所有学生信息
将学生的全部信息获取到,并且返回给页面,在页面中使用for循环去解析即可
1 | @blue.route("/getstudents/") |
6.3获取s_id的学生的信息
写法一:
1 | students = Student.query.filter(Student.s_id==1) |
写法二:
1 | students = Student.query.filter_by(s_id=2) |
注意: filter中可以接多个过滤条件
写法三:
1 | sql = 'select * from student where s_id=1' |
修改学生信息
写法一:
1 | students = Student.query.filter_by(s-id=3).first() |
写法二:
1 | Student.query.filter_by(s_id=3).update({'s_name': '呵呵哒'}) |
6.5删除一个学生的信息
写法一:
1 | student = Student.query.filter_by(s_id=2).first() |
写法二:
1 | students = Student.query.filter_by(s_id=1).all() |
注意:filter_by后的结果是一个list的结果集
重点注意:在增删改中如果不commit的话,数据库中的数据并不会更新,只会修改本地缓存中的数据,所以一定需要db.session.commit()
最后更新: 2018年06月12日 20:26