Ich erstelle eine Tabelle mit Primärschlüssel und Autoinkrement.Python - Sqlite Tuple einfügen ohne den Autoinkrement Primärschlüssel Wert
with open('RAND.xml', "rb") as f, sqlite3.connect("race.db") as connection:
c = connection.cursor()
c.execute(
"""CREATE TABLE IF NOT EXISTS race(RaceID INTEGER PRIMARY KEY AUTOINCREMENT,R_Number INT, R_KEY INT,\
R_NAME TEXT, R_AGE INT, R_DIST TEXT, R_CLASS, M_ID INT)""")
Ich möchte ein Tupel dann einzufügen, die natürlich 1 eine geringere Anzahl als die Summe der Spalten hat, weil die erste autoincrement ist.
sql_data = tuple(b)
c.executemany('insert into race values(?,?,?,?,?,?,?)', b)
Wie kann ich diesen Fehler stoppen?
sqlite3.OperationalError: table race has 8 columns but 7 values were supplied
Ich habe Sie möglicherweise leicht irregeführt, da ich glaube, dass einige Datenbanken einen Autoinkrementwert generieren, wenn Sie versuchen, eine NULL im Primärschlüsselfeld zu speichern (da NULL niemals ein gültiger Primärschlüssel ist). – holdenweb
Ja es noch Fehler. λ python xml_race.py Traceback (letzter Aufruf zuletzt): Datei "xml_race.py", Zeile 78, in Werte (?,?,?,?,?,?,?) '' ', sql_data) sqlite3.ProgrammingError: Falsche Anzahl der gelieferten Bindungen. Die aktuelle Anweisung verwendet 7, und es werden 6 bereitgestellt. Will versuchen, fügen Sie eine Null in –
sayth
Die klare Implikation dieser Fehlermeldung ist als 'len (sql_data)! = 7 '- können Sie das mit einem' print' überprüfen? – holdenweb