2010-11-20 10 views
0

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?

Répondre