[sqlalchemy]语法错误:关键字arg之后是非关键字arg

2024-10-02 08:17:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我得到了一个错误:

SyntaxError: non-keyword arg after keyword arg


Tags: noneidgetbyreturndefargfilter
2条回答

通过使用id=id传递一个id参数,其值等于id变量。相反,您需要以field == value的格式向or_传递过滤条件。在

只需将id=id替换为id==id。在

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方法不是很灵活,但是有了上面的方法,您应该可以实现同样的效果(未经测试)。在

相关问题 更多 >

    热门问题