Für jede Schleife in dem folgenden Code, fügt die INSERT INTO den zugewiesenen Wert auf die richtige Spalte aber in einer neuen Zeile:Insert Werte in SQLite einer Zeile zu einem Zeitpunkt
import sqlite3
conn = sqlite3.connect('testtable.sqlite3')
cur = conn.cursor()
cur.executescript(''' DROP TABLE IF EXISTS Tracks;
CREATE TABLE Tracks (id, singer, song)''')
lst = ['id', 'singer', 'song']
for i in range(len(lst)):
print 'Enter a value for column', lst[i]
insdata = raw_input('>>> ')
cur.execute('''INSERT INTO Tracks ({col}) VALUES (?)'''\
.format(col=lst[i]), (insdata,))
conn.commit()
conn.close()
Frage: Wie kann Ich sage SQLite nicht zu Zeile in jeder Schleife ändern und füllen Sie die Tabelle eine Zeile auf einmal?
Hinweis: Ich möchte nicht explizit auf alle Spaltennamen in meinem Code verweisen (wie INSERT INTO-Tabelle (alle Spalten)), weil ich in meinem Übungsskript ihren Namen und ihre Gesamtzahl eingeben muss .
Sie können nicht "einen Teil einer Zeile" in ein RDBMS einfügen; Sie müssen die entsprechenden Parameterlisten und Abfrageparameter generieren. Achten Sie auch auf SQL-Injection in den Spaltennamen, und wenn Sie nicht an einem Schema-unabhängig arbeiten, ist ein dynamisch geändertes Schema normalerweise die falsche Lösung. –
Ich übe nur für mich selbst, versuche einige Mitarbeiter, neue Konzepte anzuwenden. Ich bekomme den ersten Teil Ihrer Antwort nicht wirklich. Trotzdem danke! – ToucHDowN