Python 3.6-'NoneType'测试失败

时间:2018-08-29 06:18:39

标签: python python-3.x

我正在从sqlite3数据库中读取并过滤掉NoneType,因为我只希望 None的值。我尝试了两种建议使用here的方法,结果相同。这使我认为下面的if陈述是正确的,但是我缺少一些更基本的东西。任何建议表示赞赏。

从数据库读取

        conn.commit()
        c.execute("SELECT tact FROM LineOEE03 ORDER BY tact DESC LIMIT 1")
        current_tact = c.fetchone()

NoneType测试

        if current_tact is not None:
            current_tact = int(current_tact[0])
        else:
            current_tact = 60

错误

current_tact = int(current_tact[0])
     

TypeError:int()参数必须是字符串,类似字节的对象或数字,而不是'NoneType'

  • 如果我在not None中专门设置if-statement类型,为什么会出现此错误?
  • 执行此操作的正确方法是什么,例如当值为None时,我可以分配预定义的值?

1 个答案:

答案 0 :(得分:3)

您可以添加其他测试来检查列表中的第一项是否不是None,这实际上是您尝试转换为整数的内容:

if current_tact is not None and current_tact[0] is not None:
    current_tact = int(current_tact[0])

或使用try-except块来避免完全测试:

try:
    current_tact = int(current_tact[0])
except TypeError:
    current_tact = 60