fastapi使用sqlalchemy进行动态多条件查询

fastapi没有类似flask的sqlalchemy扩展,所以只能自行实现。

现有一个列表,包含姓名、电话、地址、手机号码、状态等等许多字段,用户可能通过任意字段组合来查询结果。
其实现方法是对前端传过来的非空键来进行字符串反射,如下:

def get_company(db: Session, param: CompanyQuery):
  filters: list = []
  query_dict: dict = param.dict()
  for p in query_dict:
      if query_dict[p] and type(query_dict[p]) is not int:
          filters.append(getattr(Company, p) == query_dict[p])
  return db.query(Company).filter(*filters).paginate(param.page, param.limit, False)

添加新评论