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