Vložení jednoho záznamu
V SQLAlchemy existuje několik způsobů, jak vložit data – my se zaměříme na ten, který sleduje stejný vzor jako příkaz select.
Použijeme příkaz insert, kde jako argument zadáš tabulku a data k vložení předáš metodou .values() jako pojmenované argumenty. Například pokud tabulka my_table obsahuje sloupce my_col_1 a my_col_2, pak insert(my_table).values(my_col_1=5, my_col_2="Example") vytvoří v my_table nový řádek s hodnotou 5 ve sloupci my_col_1 a hodnotou "Example" ve sloupci my_col_2.
Všimni si rozdílu v syntaxi: když připojuješ podmínku where k existujícímu příkazu, uvádíš název tabulky i název sloupce, například new_stmt = old_stmt.where(my_tbl.columns.my_col == 15). Je to nutné proto, že existující příkaz může pracovat s více tabulkami.
Naopak, záznamy lze vkládat vždy jen do jedné tabulky, takže při použití values() název tabulky uvádět nemusíš, např. stmt = insert(my_table).values(my_col = 10).
V tomto cvičení se tabulka jmenuje data. Její strukturu si můžeš prohlédnout spuštěním repr(data) v konzoli.
Toto cvičení je součástí kurzu
Introduction to Databases in Python
Pokyny k cvičení
- Importuj
insertaselectz modulusqlalchemy. - Sestav příkaz
insert_stmtpro tabulkudatatak, aby nastavilnamena'Anna',countna1,amountna1000.00avalidnaTrue. - Spusť
insert_stmtpomocíconnectiona ulož výsledek do proměnnéresults. - Vypiš atribut
.rowcountproměnnéresults, abys zjistil/a, kolik záznamů bylo vloženo. - Sestav příkaz SELECT, který v tabulce
datavyhledá záznam s hodnotounamerovnou'Anna'. - Spusť řešení, aby se zobrazily výsledky příkazu SELECT.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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())