常見的查詢方法:
all()返回所有用戶
User.query.all()
first()返回第一條用戶 沒有返回None
first_or_404()返回第一條用戶,沒有返回404錯誤響應(yīng)
User.query.first()
User.query.first_or_404()
get() 返回指定的主鍵(id 字段)的用戶
get_or_404() 返回指定的主鍵(id字段)的用戶,沒有返回404錯誤響應(yīng)
User.query.get(1)
User.query.get_or_404(1)
count() 返回用戶的數(shù)量
User.query.count()
paginate()返回一個Pagination對象参淫,可以對用戶進(jìn)行分頁處理
User.query.order_by(user.timestamp.desc()).paginate(page, per_page)
page: 當(dāng)前頁數(shù)
per_page: 每頁的條數(shù)
with_parent(instance)傳入模型類實例對象作為參數(shù)允粤,返回和這個實例相關(guān)的對象
實例:獲取用戶未讀信息的條數(shù)(User, Massage 外鍵關(guān)聯(lián))
user = User.query.get(1)
massage = Massage.query.with_parent(user).filter_by(is_read = False).count()
常用過濾方法
filter()馁痴、filter_by()使用制定的過濾規(guī)則嚷硫,獲取想要的查詢對象
User.query.filter(User.name=='jack').first()
User.query.filter_by(name='jack').first()
like 模糊過濾查詢:
User.query.filter(User.name like ('%ac%')).all()
in 包含過濾查詢:
User.query.filter(User.name in_(['jack','mary','bruce'])).all()
not in 不包含過濾查詢:
User.query.filter(~User.name in_(['jack','mary','bruce'])).all()
and 邏輯與過濾查詢:
User.query.filter(and_(User.name=='jack', User.gender == 1)).all()
or 邏輯或過濾查詢:
User.query.filter(or_(User.name=='jack', User.name == 'mary')).all()
order_by 按照規(guī)定的順序查詢:
# 按照id升序
User.query.filter(User.gender==1).order_by(User.id).all()
# 按照id降序
User.query.filter(User.gender==1).order_by(User.id.desc()).all()
limit 限制數(shù)量查詢:
User.query.filter(User.gender==1).limit(3).all()
group_by 根據(jù)條件分組查詢:
from sqlalchemy import func
# 使用with_entities()方法來獲取要在結(jié)果中返回的列
# lable 給字段起別名
User.query.with_entities(User, func.count(*).lable('num')).group_by(User.gender).all()
offset 根據(jù)指定的偏移量查詢:
User.query.offset(2).limit(5).all()
func.random 隨機(jī)獲取查詢:
User.query.order_by(func.random()).limit(10)