Dans mon schéma de la table:bools Stockage dans la base de données SQLite
... disabled BOOLEAN, ...
Lors de la connexion à db:
db = sqlite3.connect(f, detect_types=sqlite3.PARSE_DECLTYPES)
sqlite3.register_converter("BOOLEAN", myfunc)
insérer un disque comme si:
INSERT INTO mytable (disabled, ...) VALUES (:disabled, ...)
Avec un paramètre dict contenant désactivé: False.
Quand je lis cet enregistrement de retour, myfunc est appelé à convertir le type BOOLEAN:
def myfunc(x):
print x, type(x)
Résultat: 0, <type 'str'>
(ce qui bien sûr est évaluée comme vrai quand je veux Faux)
Je veux bools stockées Comme 1 octet INTEGER, je veux simplement les convertir en Python bool en lisant les enregistrements (les autres parties du code attendent les booléens non ints). SQLite les stocke-t-il sous forme de chaînes ou les convertit-il en chaînes avant d'appeler myfunc? Pourquoi?
P.S. - J'ai essayé d'utiliser sqlite3.register_adapter(bool, int)
, en vain.
Je ne sais pas pourquoi vous obtenez de nouveau une chaîne, mais les convertir en et ensuite bool devrait être une solution de contournement pour l'instant. – pypat