@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方法不是很灵活,但通过上述方法,您应该能够实现相同的(未经测试)。