当前位置: 首页 > article >正文

Flask使用Flask-SQLAlchemy对数据库操作详解二(配置、表与表之间一对一、多对一、多对多关系及增删改查参数和代码详细总结)

在这里插入图片描述
前面接:Flask使用Flask-SQLAlchemy对数据库操作详解一(配置、表与表之间一对一、多对一、多对多关系及增删改查参数和代码详细总结)

文章目录

  • 4.增删改查操作
    • 4.1添加
      • 1. 使用`add()`方法添加新数据
      • 2. 使用`create()`方法创建新数据
    • 4.2 查询数据
      • 1. 查询所有记录
      • 2. 条件查询
      • 3. 排序查询
      • 4. 分页查询
    • 4.3更新数据
      • 1. 更新单个对象
      • 2. 批量更新
    • 4.4删除数据
      • 1. 删除单个对象
      • 2. 批量删除

4.增删改查操作

表的所有查询操作都是在query对象上进行操作,query对象还有其它的过滤器:

SQLAlchemy常用查询过滤器

过滤器说明
filter()把过滤器加到原查询上
filter_by()等值过滤器、指定特定值
limit()限制结果数量
offset()偏移查询结果
order_by()根据指定条件进行排序
group_by()根据指定条件进行分组

SQLAlchemy常用查询执行方法

方法说明
all()列表形式返回所有结果
first()返回第一个结果,如果没有,返回None
first()_or_404()返回第一个结果,没有就终止请求,返回404
get()根据主键返回结果,没有就返回None
get_or_404()根据主键返回结果,没有就终止请求,返回404
count()结果计数
paginate()返回一个paginate对象,包含指定范围的结果

4.1添加

1. 使用add()方法添加新数据

# 新增一条记录
user = User(username='test', email='test@example.com')
db.session.add(user)
db.session.commit()

2. 使用create()方法创建新数据

# 新增一条记录
user = User.create(username='test', email='test@example.com')

4.2 查询数据

在Flask-SQLAlchemy中,可以使用db.session对象的query()方法来查询数据。下面是一些常用的查询数据的方法:

1. 查询所有记录

# 查询所有记录
users = User.query.all()

2. 条件查询

# 条件查询
user = User.query.filter_by(username='test').first()

3. 排序查询

# 排序查询(升序)
users = User.query.order_by(User.username.desc()).all() #asc()升序

4. 分页查询

# 分页查询
#page:要显示的页数,从 1 开始计数。
#per_page:每页显示的记录数。
page = 1
per_page = 10
users = User.query.paginate(page=page, per_page=per_page)
print(users.items)      # 当前页的查询结果
print(users.page)       # 当前页数
print(users.pages)      # 总页数
print(users.total)      # 总记录数
print(users.per_page)   # 每页显示的记录数

#也可以这样分页查询
users = User.query.limit(10).offset(0).all()    # 第 1 页
users = User.query.limit(10).offset(10).all()   # 第 2 页
users = User.query.limit(10).offset(20).all()   # 第 3 页

4.3更新数据

在Flask-SQLAlchemy中,可以使用db.session对象的commit()方法来提交数据的修改。下面是一些常用的更新数据的方法:

1. 更新单个对象

# 更新单个对象
user = User.query.filter_by(username='test').first()
user.email = 'new_email@example.com'
db.session.commit()

2. 批量更新

# 批量更新
User.query.filter_by(username='test').update({'email': 'new_email@example.com'})
db.session.commit()

4.4删除数据

在Flask-SQLAlchemy中,可以使用db.session对象的delete()方法来删除数据。下面是一些常用的删除数据的方法:

1. 删除单个对象

# 删除单个对象
user = User.query.filter_by(username='test').first()
db.session.delete(user)
db.session.commit()

2. 批量删除

# 批量删除
User.query.filter_by(username='test').delete()
db.session.commit()

补充知识点
使用migrate对数据迁移

migrate=Migrate(app,db)
# flask db init 只执行一次生成文件目录
# flask db migrate
# flask db upgrade

Github练习示例:
https://blog.csdn.net/QH2107/article/details/130381365?spm=1001.2014.3001.5502
https://github.com/QHCV/Flask_Book_Manage
官方文档:
中文:http://www.pythondoc.com/flask-sqlalchemy/index.html
英文:https://flask-sqlalchemy.palletsprojects.com/en/3.0.x/

水平有限,如果有错误或者建议,可以在评论区交流一下。
相关文章推荐:
https://blog.csdn.net/QH2107/article/details/130450305?spm=1001.2014.3001.5502

希望有所帮助!喜欢就点个赞吧!


http://www.kler.cn/news/17848.html

相关文章:

  • 如何把握未来增长话语权,全链路数字化运营有解
  • 设计原则之【迪米特法则】
  • 测度与积分 Measures and Integration学习笔记
  • 神经网络:Zero2Hero 1
  • 【Linux-进程通信1】管道
  • 剑指 Offer 28. 对称的二叉树
  • expected ‘(‘ after 、error: use of undeclared identifier ‘PRESERVE8‘
  • 【华为机试】——HJ4 字符串分隔
  • Ubuntu 20.04安装mysql8并配置远程访问
  • [EIS 2019]EzPOP
  • Dtop环球嘉年华全球Web3.0分布式私域电商生态发展峰会圆满举办
  • PHP检查目录是否存在?file_exists与is_file、is_dir的区别,以及执行效率的比较
  • 【MySQL--07】内置函数
  • 华为MPLS跨域C1方式RR场景(数据不经过RR)实验配置
  • 【软考数据库】第八章 数据库SQL语言
  • antd-vue - - - - - row-selection的使用
  • 智能座舱的“宏大蓝图”和“残酷现实”
  • 基于R语言的贝叶斯时空数据模型技术应用
  • 3.20 makefile的条件判断及函数使用
  • Nginx基础配置详解(main、events、http、server、location)
  • 圣杯布局和双飞翼布局
  • 企业遇到知识管理困境该怎么办?这里有解决方案!寻找Baklib
  • 一文搞懂TS中的泛型
  • 【Unity编辑器】拓展Inspector视图
  • 【Python百日进阶-Web开发-Feffery】Day617- 趣味dash_17:微型系统--引入flask-login
  • vue+node.js高校青年志愿者管理系统
  • AI来势汹汹,这份「生存计划」请查收!
  • 搭建vue3+vite工程
  • HTTPS协议介绍
  • 4.4——多重继承