flask_SQLAlchemy 中經常使用的過濾和執行器

經常使用的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對象,它包含指定範圍內的結果
 """
    查詢全部用戶數據
    User.query.all()

    查詢有多少個用戶
    User.query.count()

    查詢第1個用戶
    User.query.first()
    User.query.get(1)   # 根據id查詢

    查詢id爲4的用戶[3種方式]
    User.query.get(4)
    User.query.filter_by(id=4).all()   # 簡單查詢  使用關鍵字實參的形式來設置字段名
    User.query.filter(User.id == 4).all()  # 複雜查詢  使用恆等式等其餘形式來設置條件

    查詢名字結尾字符爲g的全部用戶[開始 / 包含]
    User.query.filter(User.name.endswith("g")).all()
    User.query.filter(User.name.startswith("w")).all()
    User.query.filter(User.name.contains("n")).all()
    User.query.filter(User.name.like("%n%g")).all()  模糊查詢

    查詢名字和郵箱都以li開頭的全部用戶[2種方式]
    User.query.filter(User.name.startswith("li"), User.email.startswith("li")).all()

    from sqlalchemy import and_
    User.query.filter(and_(User.name.startswith("li"), User.email.startswith("li"))).all()

    查詢age是25 或者 `email`以`itheima.com`結尾的全部用戶
    from sqlalchemy import or_
    User.query.filter(or_(User.age == 25, User.email.endswith("itheima.com"))).all()

    查詢名字不等於wang的全部用戶[2種方式]
    from sqlalchemy import not_
    User.query.filter(not_(User.name == "wang")).all()
    User.query.filter(User.name != "wang").all()

    查詢id爲[1, 3, 5, 7, 9]的用戶
    User.query.filter(User.id.in_([1, 3, 5, 7, 9])).all()

    全部用戶先按年齡從小到大, 再按id從大到小排序, 取前5個
    User.query.order_by(User.age, User.id.desc()).limit(5).all()

    分頁查詢, 每頁3個, 查詢第2頁的數據
    pn = User.query.paginate(2, 3)
    pn.items  獲取該頁的數據     pn.page   獲取當前的頁碼     pn.pages  獲取總頁數
"""
相關文章
相關標籤/搜索