如何在sqlalchemy中使用filter_by and not equals to?

如何在sqlalchemy中使用filter_by and not equals to?,sqlalchemy,sqlanywhere,sqlalchemy-utils,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(R

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

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

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

我不相信你能用
=

您可以执行
connectivity=“YES”
或使用
filter
sqlalchemy函数,以便传递
=
=,但您将无法使用关键字args。您必须像这样传递一个SQL表达式。。。
res=session.query(obj).筛选依据(连接性!=“否”)

这个问题可能会有帮助。。。

您是否只是尝试了
res=session.query(obj).按(连接“否”)筛选?

每次进行查询时创建一个
sessionmaker
实例是一种反模式。您可以将行
DBSession=sessionmaker(bind=engine)
移动到
query\u from\u DB
之外。看见如果您没有加载任何关系,那么在使用查询返回的对象之前关闭会话也会产生问题。