Flask数据库操作

• Flask 数据库主要是学习Flask-SQLAlchemy安装及连接、使用数据库、数据库的迁移,可以定一个大概的学习目标,我之前是这么定的:

• 能够理解 ORM 工作原理以及其优缺点
• 能够写出在 Flask 中连接 MySQL 的配置项格式(IP,端口,数据库)
• 能够使用 SQLAlchemy 定义出关系为一对多模型类
• 能够使用 SQLAlchemy 的相关函数创建表及删除表
• 能够写出的指定模型数据对数据库的增删改代码
• 能够写出模型数据按照条件查询的功能逻辑
• 能够写出模型数据按照指定数量分页的功能逻辑
• 能够写出模型数据按照指定条件排序的功能逻辑
• 能够按照课件步骤实现综合图书管理的相关案例
• 能够使用 Flask-Migrate 扩展对数据库进行迁移
今天来说一下数据库的基础操作,也就是增删改查
会话用 db.session 表示。在准备把数据写入数据库前,要先将数据添加到会话中然后调用 commit() 方法提交会话。
在 Flask-SQLAlchemy 中,查询操作是通过 query 对象操作数据。
最基本的查询是返回表中所有数据,可以通过过滤器进行更精确的数据库查询。

创建表:db.create_all()
删除表:db.drop_all()
另外说两句,类似于这种删除表、删库的语句,我一般是不去记的,因为在我学习的时候,所有的查询语句都不敢兴趣,唯独看到删库的时候,眼睛一亮冒绿光!但有天你从事这份工作之后你会发现,删库跑路只是个谣言,你觉得你断了别人财路你能跑的了??断人财路如杀人父母,兄弟们谨记,如果真的要删除一些东西,最好也要确认再三,毕竟删库一时爽,爽完悔断肠!

查询:filter——by精确查询:返回名字等于wang的所有人
User.query.filter_by(name=’wang’).all()
First()返回查询到的第一个对象
User.quey.first()
all()返回查询到的所有对象
User.query.all()
Filter模糊查询,返回名字姐为字符为g的所有数据。
User.query.filter(User.name.endswith(‘g’)).all()
Get():参数为主键,如果主键不存在没有返回内容
User.query.get()
逻辑非,返回名字不等于wang 的所有数据
User.query.filter(User.name!=’wang’).all
Not_相当于取反
from sqlalchemy import not_
User.query.filter(not_(User.name==‘chen’)).all()
逻辑与,需要导入and,返回and()条件满足的所有数据
from sqlalchemy import and_
User.query.filter(and_(User.name!=‘wang’,User.email.endswith(‘163.com’))).all()

逻辑或,需要导入or_
from sqlalchemy import or_
User.query.filter(or_(User.name!=‘wang’,User.email.endswith(‘163.com’))).all()
查询数据后删除
user = User.query.first()
db.session.delete(user)
db.session.commit()
User.query.all()
更新数据
user = User.query.first()
user.name = ‘dong’
db.session.commit()
user.query.first()
关联查询示例:
查询角色的所有用户
#查询roles表id为1的角色
rol = Role.query.get(1)
#查询该角色的所有用户
rol.us.all()
查询用户所属角色
#查询user表id为3的用户
usl = User.query.get(3)
#查询用户属于什么角色
usl.tole

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值