'none'是Unicode,而不是python sqlite3中的NoneType

use*_*922 1 python sqlite

如果我有这样的陈述:

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.
Run Code Online (Sandbox Code Playgroud)

检索hair_color将u'None'不是一个NoneType.

我知道我可以做一个简单的检查,看看它是否等于unicode"None",而不是指定这个条件,有没有办法告诉python我想要将具有"None"的字段替换为NoneType时我做一个fetchone()或fetchall()?

MYTABLE是 (Id INTEGER PRIMARY KEY, name TEXT, age INTEGER, hair_color TEXT)

use*_*922 5

对不起伙计们,我只是想通了.

事实证明,我必须明确告诉sqlite3我希望python自动在类型之间进行转换.

所以解决方案是这样做:

conn = sqlite3.connect(db, detect_types=sqlite3.PARSE_DECLTYPES)
Run Code Online (Sandbox Code Playgroud)