@classmethod
def get(cls, id=None, **kwarg):
return con_sesison.query(cls).filter_by(or_(id=id, and_(**kwarg))).scalar()
我得到错误:
SyntaxError:关键字arg之后的非关键字arg
答案 0 :(得分:1)
通过使用id=id
,您传递的id
参数的值等于id
变量。相反,您需要将格式为or_
的过滤条件传递给field == value
。
只需将id=id
替换为id==id
。
答案 1 :(得分:0)
filter_by
只是一个通过关键字参数进行相等比较的速记函数。相反,使用允许表达式的filter
几乎总是更清楚:
exprs = [cls.k == v for k, v in kwarg.items]
con_session.query(cls).filter(or_(cls.id==id, and_(*exprs))).scalar()
filter_by
方法不是很灵活,但是上面你应能够实现相同的(未经测试)。