Inserarea unui singur rând
Există mai multe moduri de a efectua o inserare cu SQLAlchemy; ne vom concentra însă pe cel care urmează același tipar ca instrucțiunea select.
Acesta folosește o instrucțiune insert în care specifici tabelul ca argument și furnizezi datele pe care dorești să le inserezi prin metoda .values(), sub formă de argumente cu cuvinte-cheie. De exemplu, dacă my_table conține coloanele my_col_1 și my_col_2, atunci insert(my_table).values(my_col_1=5, my_col_2="Example") va crea un rând în my_table cu valoarea 5 în my_col_1 și valoarea "Example" în my_col_2.
Observă diferența de sintaxă: când adaugi o clauză where la o instrucțiune existentă, incluzi numele tabelului împreună cu numele coloanei, de exemplu new_stmt = old_stmt.where(my_tbl.columns.my_col == 15). Acest lucru este necesar deoarece instrucțiunea existentă poate implica mai multe tabele.
Pe de altă parte, poți insera o înregistrare doar într-un singur tabel, așadar nu este nevoie să incluzi numele tabelului când folosești values() pentru inserare, de ex. stmt = insert(my_table).values(my_col = 10).
În acest exercițiu, numele tabelului este data. Poți rula repr(data) în consolă pentru a examina structura tabelului.
Acest exercițiu face parte din cursul
Introducere în baze de date în Python
Instrucțiuni pentru exercițiu
- Importă
insertșiselectdin modululsqlalchemy. - Construiește o instrucțiune de inserare
insert_stmtpentru tabeluldata, care să setezenamela'Anna',countla1,amountla1000.00șivalidlaTrue. - Execută
insert_stmtfolosindconnectionși stocheazăresults. - Afișează atributul
.rowcountal variabileiresultspentru a vedea câte înregistrări au fost inserate. - Construiește o instrucțiune de selecție pentru a interoga tabelul
datași a găsi înregistrarea cunameegal cu'Anna'. - Rulează soluția pentru a afișa rezultatele execuției instrucțiunii de selecție.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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())