如何在sqlalchemy中使用filter_by而不是等于?

时间:2018-05-26 18:25:34

标签: sqlalchemy sqlanywhere sqlalchemy-utils

我有一个定义如下的函数来查询数据库表

def query_from_DB(obj, **filter):

    DBSession = sessionmaker(bind=engine)
    session = DBSession()

    res = session.query(obj).filter_by(**filter)
    session.close()

    return [x for x in res] 

我使用下面的请求查询表格

query_from_DB(Router, sp_id="sp-10.1.10.149", connectivity="NO")

上面的结果正确地返回了来自DB的响应,但是当我使用

进行查询时
query_from_DB(Router, sp_id!="sp-10.1.10.149", connectivity="NO")

我收到了错误

 SyntaxError: non-keyword arg after keyword arg

我可以为获得结果做出哪些可能的改变?

2 个答案:

答案 0 :(得分:0)

我不相信你可以在关键字参数上使用!=

您可以执行connectivity="YES"或使用filter sqlalchemy功能,这样您就可以通过==!=,但之后您将无法使用关键字参数。你必须像这样传递一个SQL表达式...... res = session.query(obj).filter_by(connectivity != "NO")

这个问题可能有帮助... flask sqlalchemy querying a column with not equals

答案 1 :(得分:-1)

您是否只是尝试res = session.query(obj).filter_by(connectivity <> "NO")