【问题标题】:SQLAlchemy passing null to orSQLAlchemy 将 null 传递给 or
【发布时间】:2020-02-02 06:16:59
【问题描述】:

在 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"

【问题讨论】:

标签: python sql oracle sqlalchemy


【解决方案1】:

我认为如果您的v_category 为空,则不应按category.is_(None) 过滤。通过这样做,您将返回所有类别为NULL 的书籍。根据您的问题,如果v_categoryNone,您希望返回所有类别的所有书籍。

你可以试试下面的代码:

def get_book_by_category(v_category):
    query = Book.query
    if v_category:
         query = query.filter(category == v_category)
    return query

【讨论】:

    猜你喜欢
    • 2010-11-21
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多