[sqlalchemy] SyntaxError:关键字arg之后的非关键字arg

时间:2013-08-22 09:19:54

标签: python sqlalchemy

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

我得到错误:

  

SyntaxError:关键字arg之后的非关键字arg

2 个答案:

答案 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方法不是很灵活,但是上面你能够实现相同的(未经测试)。