Ich lerne SQL Alchemy. Ich habe eine Liste von Spaltennamen aus einer CSV-Datei. Ich möchte Insert-Anweisungen für jede Zeile (oder eine einzelne Einfügung für alle Zeilen) erstellen. Bisher habe ichErstellen Sie ein Objekt einfügen
with open('tablename.csv', 'r') as f:
reader = csv.reader(f)
columns = next(reader)
for data in reader:
query = insert(table(table_name), columns, data)
print(str(query))
Das gerade druckt
INSERT INTO tablename() VALUES()
für jede Zeile in der CSV-Datei.
Wie stelle ich die Spaltennamen und Werte korrekt zur Verfügung?
Ich versuche, große Mengen von sqlalchemy Docs heute zu verdauen. Also kann ich nur die Spaltennamen angeben und ihre Typen weglassen? –
Ist '[dict (zip (columns, data)) für Daten im Reader]' eine Liste oder kann es ein Generator sein? –
Zu Ihrer ersten Frage, wenn Sie die leichtgewichtigen 'table()' - und 'column()' -Konstrukte verwenden, ist der 'type_' nicht unbedingt erforderlich, wenn Sie geeignete Werte übergeben, die Ihr DB-API-Treiber in einer Art und Weise verarbeiten kann SQL, das in den Typ der Spalte und/oder den fraglichen Typ konvertierbar ist, erfordert keine spezielle bind/SQL-Verarbeitung. –