2012-09-19 27 views
1

如果我有像這樣的聲明:「無」是Unicode而不是NoneType在Python sqlite3的

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」的字段當我做一個fetchone()或fetchall()時使用一個NoneType?

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

+0

你是什麼MYTABLE的定義是什麼? –

+0

是不是因爲'(「%s」%None)是'None'(而不是'None')。 –

回答

5

對不起球員,我只是理解了它。

事實證明,我必須明確地告訴sqlite3我希望python在類型之間自動轉換。

因此,解決辦法是要做到這一點:

conn = sqlite3.connect(db, detect_types=sqlite3.PARSE_DECLTYPES) 
相關問題