Gemäß der sqlite3 documentation wird beim Erstellen einer Tabelle, bei der der Primärschlüssel eine aufsteigende Ganzzahl ist, der Primärschlüssel als Alias für die RowID verwendet. Das passiert nicht für mich.sqlite3-Rowid-Alias wird nicht ordnungsgemäß erstellt
Hier ist meine Schöpfung Code:
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
Hier ist mein Prüfcodes:
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
Dies funktioniert, wenn ich select rowid
aber nicht, wenn ich select driveid
.
Was ist los?
Siehe http://www.sqlite.org/lang_createtable.html#rowid – vy32