我们使用flask框架怎么从数据库中查询数据?为此,Flask-SQLAlchemy 在您的 Model
类上提供了 query
属性。当您访问它时,您会得到一个新的所有记录的查询对象。在使用 all()
或者 first()
发起查询之前可以使用方法 filter()
来过滤记录。如果您想要用主键查询的话,也可以使用 get()
。
查询数据内置的方法
方法 | 意义 |
---|---|
.all | 查询所有结果 |
get(**kwargs) | 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。 |
filter(**kwargs) | 它包含了所给筛选条件相匹配的对象 |
filter_by(**kwargs) | 类似于filter,不过filter更加精确,不能用于like的模糊查询 |
exclude(**kwargs) | 它包含了与所给筛选条件不匹配的对象 |
values(*field): | 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列, 返回的是查询出来的对象的具体的属性(数据库字段) |
order_by(*field) | 对查询结果排序 |
reverse() | 对查询结果反向排序,请注意reverse()通常只能在具有已定义顺序的QuerySet上调用(在model类的Meta中指定ordering或调用order_by()方法 |
values_list(*field) | 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列, 返回的是查询出来的对象的具体的属性(数据库字段) |
distinct() | 从返回结果中剔除重复纪录(如果你查询跨越多个表,可能在计算QuerySet时得到重复的结果。此时可以使用distinct(),注意只有在PostgreSQL中支持按字段去重。 |
count() | 返回数据库中匹配查询(QuerySet)的对象数量 |
first() | 返回第一条记录 |
last() | 返回最后一条记录 |
exists() | 如果QuerySet包含数据,就返回True,否则返回False |
返回的对象