【Flask从入门到精通:第十课:数据基本查询、关联查询】
基本查询
SQLAlchemy常用的查询过滤器
| 过滤器 | 说明 |
|---|---|
| filter() | 把过滤器添加到原查询上,返回一个新查询 |
| filter_by() | 把等值过滤器添加到原查询上,返回一个新查询 |
| limit() | 使用指定的值限定原查询返回的结果数量 |
| offset() | 设置结果范围的开始位置,偏移原查询返回的结果,返回一个新查询 |
| order_by() | 根据指定条件对原查询结果进行排序,返回一个新查询 |
| group_by() | 根据指定条件对原查询结果进行分组,返回一个新查询 |
SQLAlchemy常用的查询结果方法
| 方法 | 说明 |
|---|---|
| all() | 以列表形式返回查询的所有结果 |
| first() | 返回查询的第一个结果,模型对象,如果未查到,返回None |
| first_or_404() | 返回查询的第一个结果,模型对象,如果未查到,通过abort 返回404异常 |
| get() | 返回指定主键对应的模型对象,如不存在,返回None |
| get_or_404() | 返回指定主键对应的行,如不存在,abort 返回404 |
| count() | 返回查询结果的数量 |
| paginate() | 返回一个Paginate分页器对象,它包含指定范围内的结果 |
| having() | 返回结果中符合条件的数据,必须跟在group by后面,其他地方无法使用。 |
get():参数为主键,表示根据主键查询数据,如果主键不存在返回None
(图片来源网络,侵删)
@app.route("/get")
def get():
"""按主键获取一条"""
# student = Student.query.get({"id": 5})
# student = Student.query.get((5,))
# student = db.session.query(Student).get(5)
student = Student.query.get(5)
print(student)
return "ok"
课堂代码:
# 前面代码省略
@app.route("/")
def index():
return "ok"
@app.route("/create")
def create_table():
db.create_all() # 为项目中被识别的所有模型创建数据表
return "ok"
@app.route("/drop")
def drop_table():
db.drop_all() # 为项目中被识别的所有模型删除数据表
return "ok"
@app.route("/query")
def query():
query1 = Student.query # 简写操作
query2 = db.session.query(Student)
print(type(query1), query1)
print(type(query2), query2)
return "ok"
@app.route("/get")
def get():
"""get根据主键获取数据"""
# student1 = Student.query.get({"id":10})
student1 = Student.query.get(30)
# student2 = db.session.query(Student).get({"id":10})
student2 = db.session.query(Student).get(30)
# 结果是模型对象
print(type(student1), student1)
print(type(student2), student2)
# 查询不到结果,则返回值为None
if student1:
print(student1.name, student1.age)
if student2:
print(student2.name, student2.age)
return "ok"
if __name__ == '__main__':
app.run()
all()返回查询到的所有对象
模型类.query.all() """获取多个数据""" student = Student.query.all() print(student) # [dong, 小红, wang, chen, zhou, tang, wu, qian, liu, li, sun] student = Student.query.filter(Student.id
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
