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

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

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

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能建造小硕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值