Eén rij invoegen
Er zijn verschillende manieren om een insert uit te voeren met SQLAlchemy; wij focussen hier op de manier die hetzelfde patroon volgt als het select-statement.
Deze gebruikt een insert-statement waarbij je de tabel als argument opgeeft en de gegevens die je wilt invoegen meegeeft via de methode .values() als keyword-argumenten. Bijvoorbeeld, als my_table de kolommen my_col_1 en my_col_2 bevat, dan maakt insert(my_table).values(my_col_1=5, my_col_2="Example") een rij in my_table met de waarde in my_col_1 gelijk aan 5 en de waarde in my_col_2 gelijk aan "Example".
Let op het verschil in syntaxis: wanneer je een where-statement aan een bestaand statement toevoegt, neem je zowel de naam van de tabel als de naam van de kolom op, bijvoorbeeld new_stmt = old_stmt.where(my_tbl.columns.my_col == 15). Dit is nodig omdat het bestaande statement meerdere tabellen kan omvatten.
Aan de andere kant kun je slechts in één tabel een record inserten, dus hoef je de naam van de tabel niet op te nemen wanneer je values() gebruikt om in te voegen, bijvoorbeeld stmt = insert(my_table).values(my_col = 10).
Hier is de naam van de tabel data. Je kunt repr(data) in de console uitvoeren om de structuur van de tabel te bekijken.
Deze oefening maakt deel uit van de cursus
Introductie tot databases in Python
Oefeninstructies
- Importeer
insertenselectuit de modulesqlalchemy. - Bouw een insert-statement
insert_stmtvoor de tabeldataomnameop'Anna',countop1,amountop1000.00envalidopTruete zetten. - Voer
insert_stmtuit met deconnectionen sla deresultsop. - Print het attribuut
.rowcountvanresultsom te zien hoeveel records zijn ingevoegd. - Bouw een select-statement om in
datate zoeken naar het record met dename'Anna'. - Voer de oplossing uit om de resultaten van het uitvoeren van het select-statement te printen.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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())