在我的表模式中:
... disabled BOOLEAN, ...
连接数据库时:
db = sqlite3.connect(f, detect_types=sqlite3.PARSE_DECLTYPES)
sqlite3.register_converter("BOOLEAN", myfunc)
我像这样插入一条记录:
INSERT INTO mytable (disabled, ...) VALUES (:disabled, ...)
连同一个包含 disabled: False 的参数字典。
当我读回该记录时,会调用 myfunc 来转换 BOOLEAN 类型:
def myfunc(x):
print x, type(x)
结果:(0, <type 'str'>
当我想要 False 时,它当然评估为 True)
我希望将布尔值存储为 1 字节整数,我只想在读取记录时将它们转换为 Python 布尔值(代码的其他部分需要布尔值而不是整数)。SQLite 是将它们存储为字符串,还是在调用 myfunc 之前将它们转换为字符串?为什么?
PS - 我尝试使用sqlite3.register_adapter(bool, int)
,但无济于事。