0
@classmethod
def get(cls, id=None, **kwarg):
    return con_sesison.query(cls).filter_by(or_(id=id, and_(**kwarg))).scalar()

我得到了错误:

语法错误:关键字 arg 之后的非关键字 arg

4

2 回答 2

1

通过使用id=id,您正在传递一个id值等于id变量的参数。相反,您需要将过滤条件传递给or_in format field == value

只需替换id=idid==id.

于 2013-08-22T09:32:46.137 回答
0

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

于 2013-08-22T10:23:28.117 回答