Как использовать filter_by и не равно в sqlalchemy?

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

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 ответа

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

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

Этот вопрос может быть полезным... колба sqlalchemy запрашивая столбец с не равными

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

Другие вопросы по тегам