我正在使用sqlite数据库,其中一部分是查询和编写数据。为此,我通常会检查与特定ID匹配的行是否有字段,或者某个字段是否已填充。问题是,当涉及到None返回时,我得不到一致的结果。我这样做
cur=conn.cursor()
cur.execute('''SELECT FT1,FT2 FROM Results WHERE id=?''',(idm,))
foo=cur.fetchone()
在这种情况下,我得到的是None
。但是这里
cur=conn.cursor()
cur.execute('''SELECT YFT1,YFT2 FROM Results WHERE id=?''',(idm,))
foo=cur.fetchone()
我得到的是(None,None)
这是否有任何我不知道的规则?为了我的代码工作,为了检查是否有无回报,我必须做:
if foo is None:
或在另一种情况下
if foo[0] is None: / if None in foo:
我想知道的是,为了获得适用于这两种情况的句子,我错过了什么。
由于
答案 0 :(得分:0)
正如@jdigital评论的那样,我测试了他说的话,这就是问题
如果我通过使用fetchone不存在的id查询行,我得到None
如果我查询确实存在的行,但想要的字段为空,我会得到(None,None)
如果我查询存在的多行,但这些字段为空,我会[(None,None),(None,None)]
如果我查询不存在的多行,我会得到[]