Как использовать 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")
?