Sqlalchemy如何过滤包含Null和整数值的列

时间:2016-05-25 18:31:21

标签: python flask flask-sqlalchemy

我有一个可以为空的列的表,它包含两种类型的值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值的所有单元格。

提前谢谢!

1 个答案:

答案 0 :(得分:13)

  

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

使用|作为逻辑OR

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

使用is_(None)

或者,避免使用== None(因为短信)

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))