如果我有这样的陈述:
cursor.execute("INSERT INTO MYTABLE(name, age, hair_color) VALUES (?, ?, ?)" , ("Alice", 24, None))
cursor.execute("SELECT * FROM MYTABLE WHERE Id=?", (1,))
print cursor.fetchone()[2] is None # This is false! I want this to be true.
检索hair_color将是u'None'
而不是NoneType
。
我知道我可以做一个简单的检查,看看它是否等于unicode“None”,而不是指定这个条件,是否有办法告诉python我希望用“None”替换为“None”的字段当我执行fetchone()或fetchall()?
时,为NoneType MYTABLE是(Id INTEGER PRIMARY KEY, name TEXT, age INTEGER, hair_color TEXT)
答案 0 :(得分:5)
对不起伙计们,我只是想通了。
事实证明,我必须明确告诉sqlite3我希望python自动在类型之间进行转换。
所以解决方案就是这样做:
conn = sqlite3.connect(db, detect_types=sqlite3.PARSE_DECLTYPES)