Lors de l'utilisation :
import datetime
import sqlite3
db = sqlite3.connect('mydb.sqlite', detect_types=sqlite3.PARSE_DECLTYPES)
c = db.cursor()
db.text_factory = str
c.execute('create table if not exists mytable (date timestamp, title str, \
custom str, x float, y float, z char default null, \
postdate timestamp default null, id integer primary key autoincrement, \
url text default null)')
c.execute('insert into mytable values(?, ?, ?, ?, ?)', \
(datetime.datetime(2018,4,23,23,00), 'Test', 'Test2', 2.1, 11.1))
Je l'ai fait :
sqlite3.OperationalError : la table mytable a 9 colonnes mais 5 valeurs ont été fournies
Pourquoi SQlite ne prend-il pas en considération les valeurs par défaut (spécifiées lors de la création de la table) pour remplir une nouvelle ligne ?
(Par ailleurs, comme je rouvre un projet que j'ai écrit il y a quelques années, je ne trouve pas les datatypes str
, char
plus dans la doc sqlite3, est-ce toujours d'actualité ?)