Ich versuche, mehrere Zeilen mit der executemany
-Funktion einzufügen. Mein vollständiger Code wird am Ende gegeben.sqlite3 python 2.7 Wie kann man detailliertere Fehlerberichte (Ausnahmen) von sqlite3 aktivieren?
Die Ausnahme, die ich bekommen ist
sqlite3.IntegrityError: column carname is not unique
Ich wünschte, ich könnte eine detailliertere Fehlermeldung, die beanstandeten Werte geben, die den Fehler verursacht hat. Ist es möglich, einen detaillierteren Fehlerbericht (in einer Ausnahme) von sqlite3
zu erhalten, damit er die fehlerhaften Werte zurückgibt, die den Fehler verursacht haben? Zum Beispiel in meinem Code, die folgenden Werte sind säumige:
(0, 'Audi', 52642),
(1, 'Audi', 52642),
Die carname
sollte eindeutig sein.
Oder muss ich die Werte nur eins nach dem anderen eingeben und die Ausnahmen beachten?
Mein Code: basierend auf this tutorial, habe ich die UNIQUE
Einschränkung für die Spalte Carname hinzugefügt.
import sqlite3 as lite
import sys
cars = (
(0, 'Audi', 52642),
(1, 'Audi', 52642),
(2, 'Mercedes', 57127),
(3, 'Skoda', 9000),
(4, 'Volvo', 29000),
(5, 'Bentley', 350000),
(6, 'Hummer', 41400),
(7, 'Volkswagen', 21600)
)
tblstr = """CREATE TABLE cars (
carid integer PRIMARY KEY,
carname NVARCHAR(50) UNIQUE,
price integer NOT NULL
);"""
con = lite.connect('test.db')
with con:
cur = con.cursor()
cur.execute("DROP TABLE IF EXISTS Cars")
cur.execute(tblstr)
cur.executemany("INSERT INTO Cars VALUES(?, ?, ?)", cars)