【Flask从入门到精通:第十课:数据基本查询、关联查询】

2024-07-19 1453阅读

基本查询

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

【Flask从入门到精通:第十课:数据基本查询、关联查询】
(图片来源网络,侵删)
@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
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]