SQLAlchemy передает значение NULL или - PullRequest
0 голосов
/ 04 октября 2019

В SQL, если я предоставлю v_category = "fiction", он вернет все художественные книги, если мы предоставим v_category = null, тогда он предоставит книги всех категорий:

select * from book where category = :v_category or :v_category is null

Как мне сделатьэто в SQLAlchemy:

books = Book.query.filter (or_ (category = v_category, v_category is None) .all ()

Однако, так как or_ принимает только аргументы, а не условия, он выбрасываетошибка:

".filter(or_(workscope = v_workscope, v_workscope is None))                                        ^
SyntaxError: positional argument follows keyword argument"

1 Ответ

0 голосов
/ 04 октября 2019

Я думаю, что если ваш v_category равен нулю, вы не должны фильтровать по category.is_(None). Таким образом, вы вернете все книги с категорией как NULL. По вашему вопросу, если v_category равно None, вы хотите вернуть все книги всех категорий.

Вы можете попробовать следующий код:

def get_book_by_category(v_category):
    query = Book.query
    if v_category:
         query = query.filter(category == v_category)
    return query
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...