在我的表模式:在SQLite數據庫中存儲的bool
... disabled BOOLEAN, ...
當連接到數據庫:
db = sqlite3.connect(f, detect_types=sqlite3.PARSE_DECLTYPES)
sqlite3.register_converter("BOOLEAN", myfunc)
我插入一條記錄,像這樣:
INSERT INTO mytable (disabled, ...) VALUES (:disabled, ...)
隨着參數包含殘疾的字典:錯誤。
當我讀到這個紀錄回,MYFUNC被稱爲布爾類型轉換:
def myfunc(x):
print x, type(x)
結果:0, <type 'str'>
(當我想假這當然值爲TRUE)
我想存儲的bool作爲1個字節的INTEGER,我只是想在讀取記錄時將它們轉換爲Python布爾(代碼的其他部分期望bools不是int)。 SQLite將它們存儲爲字符串,還是在調用myfunc之前將它們轉換爲字符串?爲什麼?
P.S. - 我嘗試使用sqlite3.register_adapter(bool, int)
,無濟於事。
我不知道爲什麼你要回一個字符串,但在將它們轉換,然後爲bool應該是一個解決方法了。 – pypat