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='[email protected]')
db.session.add(user)
db.session.commit()

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

# 新增一条记录
user = User.create(username='test', email='[email protected]')

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 = '[email protected]'
db.session.commit()

2. 批量更新

# 批量更新
User.query.filter_by(username='test').update({
    
    'email': '[email protected]'})
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

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

猜你喜欢

转载自blog.csdn.net/QH2107/article/details/130491033