我有一个可以为空的列的表,它包含两种类型的值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()
我需要选择包含Null
或0
值的所有单元格。
提前谢谢!
答案 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))