【问题标题】:Sqlalchemy how to filter column which contains both Null and integer valuesSqlalchemy 如何过滤同时包含 Null 和整数值的列
【发布时间】:2016-09-23 12:35:17
【问题描述】:

我有一个可以为空的列的表,其中包含两种类型的值 Null(默认)和整数:

class Node(db.Model):
    __tablename__ = "node"
    maintenance = db.Column(db.Integer, nullable=True)

请求是这样的:

maintenance = 1
node_list = Node.query.filter(Node.maintenance != maintenance).all()

我需要选择所有包含Null0 值的单元格。

提前谢谢你!

【问题讨论】:

    标签: python flask flask-sqlalchemy


    【解决方案1】:

    我需要选择所有包含“Null”或“0”值的单元格。

    使用| 作为逻辑OR

    Node.query.filter((Node.maintenance == None) | (Node.maintenance == 0))
    

    使用is_(None)

    或者,为了避免使用== None(因为 linter)

    Node.query.filter((Node.maintenance.is_(None)) | (Node.maintenance == 0))
    

    使用or_

    或者,这个表格

    from sqlalchemy import or_
    Node.query.filter(or_(Node.maintenance == None, Node.maintenance == 0))
    

    使用in_

    如果您想知道是否可以使用类似于 SQL 和 Python 中的 in 运算符进行查询,您是对的,您也可以在 SQLAlchemy 中执行此操作,但不幸的是 it doesn't work for None/NULL values,但为了说明,我们可以看到

    Node.query.filter(Node.maintenance.in_([0, 1]))
    

    等价于

    Node.query.filter((Node.maintenance == 0) | (Node.maintenance == 1))
    

    【讨论】:

    • 谢谢!非常感谢您的帮助!
    • 来到这里寻找天气的答案None 可以用于in_ – +1。
    • 我可以查询Node.maintenance包含12吗?例如12、123、012、0812这样就可以了。
    • 如果维护是一种混合方法会怎样?
    猜你喜欢
    • 1970-01-01
    • 2017-10-28
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 2020-07-19
    相关资源
    最近更新 更多