我在 mysql 数据库表中有一个布尔字段。
# table model
class TestCase(Base):
__tablename__ = 'test_cases'
...
obsoleted = Column('obsoleted', Boolean)
要获取所有未过时测试用例的计数,可以像这样简单地完成:
caseNum = session.query(TestCase).filter(TestCase.obsoleted == False).count()
print(caseNum)
这工作正常,但 flake8 报告以下警告:
E712:与 False 的比较应该是“if cond is False:”或“if not
条件:”
好吧,我认为这是有道理的。所以将我的代码更改为:
caseNum = session.query(TestCase).filter(TestCase.obsoleted is False).count()
or
caseNum = session.query(TestCase).filter(not TestCase.obsoleted).count()
但他们都不能工作。结果始终为 0。
我认为过滤子句不支持运算符“is”或“is not”。有人可以告诉我如何处理这种情况吗?我不想禁用该薄片。
这是因为 SQLAlchemy 过滤器是为数不多的几个地方之一== False
实际上是有道理的。其他地方你应该not use it.
Add a # noqa
对该行进行评论并完成它。
或者你可以使用sqlalchemy.sql.expression.false http://docs.sqlalchemy.org/en/rel_1_0/core/sqlelement.html#sqlalchemy.sql.expression.false:
from sqlalchemy.sql.expression import false
TestCase.obsoleted == false()
where false()
返回适合您的会话 SQL 方言的正确值。有一个匹配的sqlalchemy.expression.true http://docs.sqlalchemy.org/en/rel_1_0/core/sqlelement.html?highlight=true#sqlalchemy.sql.expression.true.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)