Selon le sqlite3 documentation, la création d'une table dont la clé primaire est un entier ascendant entraîne l'alias de la valeur rowID pour la clé primaire. Cela ne se passe pas pour moi.sqlite3 alias rowid n'étant pas correctement créé
Voici mon code de création:
import sqlite3
con = sqlite3.connect("/tmp/emaildb.sqlite3")
c = con.cursor()
try:
c.execute("create table drives (driveid integer primary key asc, drivename text unique);")
con.commit()
except sqlite3.OperationalError:
pass
Voici mon code de vérification:
try:
c.execute("insert into drives (drivename) values (?)",(drivename,))
print "new ID=",c.lastrowid
except sqlite3.IntegrityError:
c.execute("select rowid from drives where drivename=?",(drivename,))
driveid = c.fetchone()[0]
print "old ID=",driveid
Cela fonctionne si je select rowid
, mais pas si je select driveid
.
Qu'est-ce qui ne va pas?
Voir http://www.sqlite.org/lang_createtable.html#rowid – vy32