Eine einzelne Zeile einfügen
Es gibt mehrere Möglichkeiten, mit SQLAlchemy ein Insert auszuführen; wir konzentrieren uns hier jedoch auf die Variante, die dem Muster von select folgt.
Dabei wird eine insert-Anweisung verwendet, bei der du die Tabelle als Argument angibst und die einzufügenden Daten über die Methode .values() als Schlüsselwortargumente übergibst. Wenn my_table beispielsweise die Spalten my_col_1 und my_col_2 enthält, erstellt insert(my_table).values(my_col_1=5, my_col_2="Example") eine Zeile in my_table mit dem Wert in my_col_1 gleich 5 und dem Wert in my_col_2 gleich "Example".
Beachte den Unterschied in der Syntax: Wenn du eine where-Klausel an eine bestehende Anweisung anhängst, gibst du den Tabellennamen sowie den Spaltennamen an, zum Beispiel new_stmt = old_stmt.where(my_tbl.columns.my_col == 15). Das ist notwendig, weil die bestehende Anweisung mehrere Tabellen umfassen kann.
Im Gegensatz dazu kannst du mit insert nur in eine einzelne Tabelle schreiben, daher musst du beim Verwenden von values() den Tabellennamen nicht angeben, z. B. stmt = insert(my_table).values(my_col = 10).
Hier lautet der Tabellenname data. Du kannst repr(data) in der Konsole ausführen, um die Struktur der Tabelle zu untersuchen.
Diese Übung ist Teil des Kurses
Einführung in Datenbanken mit Python
Anleitung zur Übung
- Importiere
insertundselectaus dem Modulsqlalchemy. - Erstelle eine Insert-Anweisung
insert_stmtfür die Tabelledata, umnameauf'Anna',countauf1,amountauf1000.00undvalidaufTruezu setzen. - Führe
insert_stmtmit derconnectionaus und speichere dieresults. - Gib das Attribut
.rowcountvonresultsaus, um zu sehen, wie viele Datensätze eingefügt wurden. - Erstelle eine Select-Anweisung, um in
datanach dem Datensatz mit demname'Anna'zu suchen. - Führe die Lösung aus, um die Ergebnisse der Select-Anweisung auszugeben.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Import insert and select from sqlalchemy
from sqlalchemy import ____, ____
# Build an insert statement to insert a record into the data table: insert_stmt
insert_stmt = insert(____).values(name=____, ____, ____, ____)
# Execute the insert statement via the connection: results
results = connection.execute(____)
# Print result rowcount
print(____)
# Build a select statement to validate the insert: select_stmt
select_stmt = select([data]).where(____ == ____)
# Print the result of executing the query.
print(connection.execute(select_stmt).first())