SQlite select / fetchone语句在Python中作为规则返回什么?

时间:2018-02-24 21:11:10

标签: python python-3.x sqlite nonetype

我正在使用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:

我想知道的是,为了获得适用于这两种情况的句子,我错过了什么。

由于

1 个答案:

答案 0 :(得分:0)

正如@jdigital评论的那样,我测试了他说的话,这就是问题

如果我通过使用fetchone不存在的id查询行,我得到None

如果我查询确实存在的行,但想要的字段为空,我会得到(None,None)

如果我查询存在的多行,但这些字段为空,我会[(None,None),(None,None)]

如果我查询不存在的多行,我会得到[]