1

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

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")

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

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

我有一个错误

 SyntaxError: non-keyword arg after keyword arg

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

4

2 回答 2

0

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

您可以执行connectivity="YES"或使用filtersqlalchemy 函数,这样您就可以传递==or !=,但是您将无法使用关键字 args。你必须像这样传递一个 SQL 表达式...... res = session.query(obj).filter_by(connectivity != "NO")

这个问题可能会有所帮助... 烧瓶 sqlalchemy 查询不等于的列

于 2018-05-27T04:32:26.637 回答
-1

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

于 2018-05-27T16:33:40.640 回答