Python中如何将函数参数作为类对象的属性进行查询调用?
报错原因
你代码中的Users.request写法是直接尝试读取Users类中名为request的固定属性,和你传入的request函数参数完全没有关联,所以会触发属性不存在的报错,同时IDE也会提示request参数未被使用。
实现方法
你的需求完全可以实现,用Python内置的getattr()函数动态读取类属性即可,该函数支持传入字符串形式的属性名,返回对应的类/对象属性:
def users(request, filters): # 动态获取Users类的对应字段属性 target_field = getattr(Users, request) result = session.query(target_field).filter(filters).all() return result
额外优化建议
为了避免传入非法字段名触发异常,建议增加字段合法性校验:
def users(request, filters): # 先校验字段是否存在 if not hasattr(Users, request): raise ValueError(f"非法查询字段:{request}") target_field = getattr(Users, request) result = session.query(target_field).filter(filters).all() return result
如果是SQLAlchemy场景,也可以通过表结构直接取字段,写法如下:
target_field = Users.__table__.c.get(request)
内容的提问来源于stack exchange,提问作者HadiH2o
相关产品推荐
相关产品推荐

