Как использовать filter_by и не равно в sqlalchemy? - PullRequest
0 голосов
/ 26 мая 2018

У меня есть определенная ниже функция для запроса таблицы базы данных

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

Какие могут быть возможные изменения, которые я могу внести, чтобы получить результат?

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Вы просто попробовали res = session.query(obj).filter_by(connectivity <> "NO")?

0 голосов
/ 27 мая 2018

Я не верю, что вы можете использовать != для аргумента ключевого слова.

Вы можете сделать connectivity="YES" или использовать функцию filter sqlalchemy, чтобы вы могли передать == или !=, но тогда вы не сможете использовать ключевые аргументы.Вам нужно будет передать выражение SQL, например, так ... res = session.query(obj).filter_by(connectivity != "NO")

Этот вопрос может быть полезен ... sqlalchemy flask, запрашивающий столбец с не равным

...