似乎在SQL中null = null
返回false。在某些情况下,null
表示未知/未指定,但通常null
被故意用来表示已知和定义明确的缺席,在这些情况下,我希望null = null
是真的。你知道吗
使用sqlite3
时,正确的处理方法是什么?像现在这样做:
c.execute('select * from foo where bar = ?', [bar])
如果bar
是None
,则将中断,而我非常希望它返回bar
是null
的每一行。这一切在Haskell的persistent中都能无缝地工作,这正是我在另一端使用的东西(FooBar ==. Nothing
),所以我希望Python端也能有类似的干净东西。你知道吗
在SQL中
NULL = NULL
确实是false(NULL实际上是IIRC,但这也是false)。在您的示例中需要的是is
操作符'select * from foo where bar is ?'
我猜persistent中的行为是选择
=
或is
,这取决于值是否为Maybe a
类型,Python没有此类信息(至少在标准库的sqlite模块中没有)。你知道吗资料来源:https://www.sqlite.org/lang_expr.html
相关问题 更多 >
编程相关推荐