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)