一篇文章搞懂flask_sqlalchemy常用操作

简介: 这篇文章介绍了Flask框架中SQLAlchemy库的常用操作,包括查询、删除和更新数据的方法和技巧。

一.查询:

1.1 查询所有

模型类.query.all() 等价于 select * from user
如果有条件的查询:
模型类.query.filter_by(字段名=值) --> select * from user where 字段名=值
模型类.query.filter_by(字段名=值).first() --> select * from user where 字段=值 limit=1

如:

select * from user where age>17 and gender ='男'
select * from user username like 'zhang%'
select * from user where rdatetime > xxx rdatetime <xxx;

注意:
模型类.query.filter() 里边是布尔的条件模型类.query.filter(模型名.字段名==值)
模型类.query.filter_by() 里边是一个等值模型类.query.filter_by(字段名=值)

1.2 模型类.query.filter()

1.模型类.query.filter().all()------------------>列表
2.模型类.query.filter().first()-------------->对象
如:

User.query.filter(User.username.endwith('z')).all() like '%z'
User.query.filter(User.username.startwith('z')).all() like 'z%'
User.query.filter(User.username.contains('z')).all() like '%z%'
User.query.filter(User.username.like('%z%')).all()

1.3 多条件:

或者:or_ 并且:and_ 非:not_

User.query.filter(or_(User.username.like('z%'),User.username.contains('i'))).all()
select * from user where username like 'z%' or username like '%z%'

User.query.filter(and_(User.username.like('z%'),User.rdatetime > '2020-10-22 23:58:23')).all()
select * from user where username like 'z%' and rdatetime > '2020-10-22 23:58:23'

1.4 若过滤时间和整型:> ,< ,>=, <=,!=

age:17,18,19,20,22,23,25…

select * from user where age in [17,18,22]

1.5 排序:order_by

user_list=User.query.filter(User.username.contains('z')).order_by(-User.rdatetime).all()
user_list=User.query.order_by(-User.id).order_by(-User.rdatetime).all()

对所有得进行排序,注意order_by()的参数:
1.直接是字符串:‘字段名’ 这样不能排序
2.模型.字段名:模型.字段 order_by(-模型.字段) 倒叙 还可以使用desc()函数

1.6 限制:limit

limit的使用 + offset
user_list=User.query.limit(2).all() 默认获取两条数据
user_list=User.query.offset(2).limit(2).all() 跳过两条记录再获取两条记录

Jquery CDN:引用网上的jQuery资源,加快速度,减少项目的复杂度和空间,更加方便与用户快速获取js效果。

查询小总结:
1.User.query.all() 所有
2.User.query.get(pk) 一个
3.User.query.filter() * ???
如果要检索的字段是字符串(varchar,db.String)
User.username.startwith(‘’)
User.username.endwitd(‘’)
User.username.contains(‘’)
User.username.like(‘’) 传入的参数需要加%
User.username.in_([‘’,‘’,‘’,‘’])
User.username==
如果要检索的字段是整型或日期类型:
User.age.lt(18) 双下划线
User.rdatetime.gt(‘…’)
User.age.le(18)
User.age.ge(18)
User.age.between(18,25)
多个条件一起检索:and_ or_
非得条件:or_

排序:order_by()
获取指定数量:limit() offset()
4.User.query.filter_by(username=‘xxx’) User.query.filter(username== ‘xxx’)

二. 删除

2.1 逻辑删除

其实就是更新(定义数据库中的表的时候,添加一个字段名为isdelete,通过此字段控制是否删除)
id=request.args.get(id) 用于接收get请求中的参数
user=User.query.get(id)
user.isdelete=True
db.session.commit()

2.2 物理删除

(彻底从数据库中删除)
id=request.args.get(id) 用于接收get请求中的参数,若为post就把args替换成form
user=User.query.get(id)
db.session.delete(user)
db.session.commit()

三. 更新

id=request.args.get(id)
user=User.query.get(id)

修改对象的属性

user.username=xxx
user.phone=xxx

提交修改

db.session.commit()

需要提交:
添加
user=User()
user.xxx=xxx
db.session.add(user)
db.session.commit()

删除
user=User.query.get(id)
db.session.delete(user)
db.session.commit()

更新
user=User.query.get(id) #获取数据库中的对象

修改对象的属性

user.username=xxx
user.phone=xxx

提交修改

db.session.commit()

相关文章
|
7月前
|
API 数据库 数据安全/隐私保护
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】Django REST framework (DRF) 是用于构建Web API的强力工具,尤其适合Django应用。本文深入讨论DRF面试常见问题,包括视图、序列化、路由、权限控制、分页过滤排序及错误处理。同时,强调了易错点如序列化器验证、权限认证配置、API版本管理、性能优化和响应格式统一,并提供实战代码示例。了解这些知识点有助于在Python面试中展现优秀的Web服务开发能力。
109 1
|
JSON API 数据格式
Python Flask学习知识点(二)
使用Flask写简单的API 所有API都一样,不限于编程语言,API的难点在于路由(URL)的设计,能否精准的找到资源,而不是在于如何用技术实现。
1158 0
|
负载均衡 中间件 关系型数据库
Python编程:Flask入门到精通(2)
Python编程:Flask入门到精通(2)
203 0
|
JSON 前端开发 NoSQL
Python编程:Flask入门到精通(1)
Python编程:Flask入门到精通(1)
195 0
|
数据库 Python
Python编程:Flask数据库扩展Flask-SQLAlchemy
Python编程:Flask数据库扩展Flask-SQLAlchemy
166 0
|
开发者 Python
|
Python
Flask 源码阅读-下篇 |Python 主题月
flask项目大名鼎鼎,不需要多做介绍。我把它称之为python服务开发的TOP2项目,另外一个就是django。这两个项目各有千秋,各自有不同的应用场景,都需要深入理解,熟练掌握。本次源码选择的版本是 1.1.2,我会采用慢读法,尽自己最大努力把它讲透。
195 0
|
Python
Flask 源码阅读-正菜 |Python 主题月
flask项目大名鼎鼎,不需要多做介绍。我把它称之为python服务开发的TOP2项目,另外一个就是django。这两个项目各有千秋,各自有不同的应用场景,都需要深入理解,熟练掌握。本次源码选择的版本是 1.1.2,我会采用慢读法,尽自己最大努力把它讲透。
165 0
|
JSON 前端开发 关系型数据库
Python编程:Flask入门到精通
Python编程:Flask入门到精通
255 0