常用的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 獲取總頁數 """
