1

私がそのような声明を持っている場合:

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ます。

ユニコード「None」と等しいかどうかを確認するための簡単なチェックを行うことができますが、この条件を指定するのではなく、「None」を持つフィールドをNoneTypeに置き換えたいことをPythonに伝える方法はありますか? fetchone()またはfetchall()を実行しますか?

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

4

1 に答える 1

5

申し訳ありませんが、私はそれを理解しました。

結局のところ、Pythonに型間で自動的に変換させたいことをsqlite3に明示的に伝える必要があります。

したがって、解決策はこれを行うことでした:

conn = sqlite3.connect(db, detect_types=sqlite3.PARSE_DECLTYPES)
于 2012-09-19T19:19:59.490 に答える