Inserire una singola riga
Ci sono diversi modi per eseguire un insert con SQLAlchemy; qui però ci concentriamo su quello che segue lo stesso schema dell'istruzione select.
Si usa un'istruzione insert in cui specifichi la tabella come argomento e fornisci i dati da inserire tramite il metodo .values() come argomenti con parola chiave. Ad esempio, se my_table contiene le colonne my_col_1 e my_col_2, allora insert(my_table).values(my_col_1=5, my_col_2="Example") creerà una riga in my_table con il valore di my_col_1 uguale a 5 e quello di my_col_2 uguale a "Example".
Nota la differenza di sintassi: quando aggiungi una clausola where a un'istruzione esistente, includi il nome della tabella oltre al nome della colonna, ad esempio new_stmt = old_stmt.where(my_tbl.columns.my_col == 15). Questo è necessario perché l'istruzione esistente potrebbe coinvolgere più tabelle.
D'altra parte, puoi effettuare un insert solo in una singola tabella, quindi non è necessario includere il nome della tabella quando usi values() per inserire, ad es. stmt = insert(my_table).values(my_col = 10).
Qui, il nome della tabella è data. Puoi eseguire repr(data) nella console per esaminarne la struttura.
Questo esercizio fa parte del corso
Introduzione ai database in Python
Istruzioni dell'esercizio
- Importa
inserteselectdal modulosqlalchemy. - Crea un'istruzione di inserimento
insert_stmtper la tabelladataimpostandonamea'Anna',counta1,amounta1000.00evalidaTrue. - Esegui
insert_stmtconconnectione salva iresults. - Stampa l'attributo
.rowcountdiresultsper vedere quanti record sono stati inseriti. - Crea un'istruzione select per interrogare
dataper il record connameuguale a'Anna'. - Esegui la soluzione per stampare i risultati dell'esecuzione dell'istruzione select.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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())