美文网首页
Flask-SQLAlchemy常用方法

Flask-SQLAlchemy常用方法

作者: python_菜鸟 | 来源:发表于2020-08-13 13:21 被阅读0次

常见的查询方法:

all()返回所有用户

User.query.all()

first()返回第一条用户 没有返回None
first_or_404()返回第一条用户,没有返回404错误响应

User.query.first()
User.query.first_or_404()

get() 返回指定的主键(id 字段)的用户
get_or_404() 返回指定的主键(id字段)的用户,没有返回404错误响应

User.query.get(1)
User.query.get_or_404(1)

count() 返回用户的数量

User.query.count()

paginate()返回一个Pagination对象,可以对用户进行分页处理

User.query.order_by(user.timestamp.desc()).paginate(page, per_page)
page: 当前页数
per_page: 每页的条数

with_parent(instance)传入模型类实例对象作为参数,返回和这个实例相关的对象
实例:获取用户未读信息的条数(User, Massage 外键关联)

user = User.query.get(1)
massage = Massage.query.with_parent(user).filter_by(is_read = False).count()

常用过滤方法

filter()、filter_by()使用制定的过滤规则,获取想要的查询对象

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 按照规定的顺序查询:

# 按照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 限制数量查询:

User.query.filter(User.gender==1).limit(3).all()

group_by 根据条件分组查询:

from sqlalchemy import func
# 使用with_entities()方法来获取要在结果中返回的列
# lable 给字段起别名
User.query.with_entities(User, func.count(*).lable('num')).group_by(User.gender).all()

offset 根据指定的偏移量查询:

User.query.offset(2).limit(5).all()

func.random 随机获取查询:

User.query.order_by(func.random()).limit(10)

相关文章

网友评论

      本文标题:Flask-SQLAlchemy常用方法

      本文链接:https://www.haomeiwen.com/subject/ugpedktx.html