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
希望有所帮助!喜欢就点个赞吧!