Insérer une seule ligne
Il existe plusieurs façons d'effectuer une insertion avec SQLAlchemy; toutefois, nous allons nous concentrer sur celle qui suit le même modèle que l'instruction select.
Elle utilise une instruction insert où vous précisez la table en argument, puis vous fournissez les données à insérer dans la valeur au moyen de la méthode .values() sous forme d'arguments nommés. Par exemple, si my_table contient les colonnes my_col_1 et my_col_2, alors insert(my_table).values(my_col_1=5, my_col_2="Example") créera une ligne dans my_table avec la valeur de my_col_1 égale à 5 et la valeur de my_col_2 égale à "Example".
Remarquez la différence de syntaxe : lorsqu'on ajoute une clause where à une instruction existante, on inclut le nom de la table ainsi que le nom de la colonne, par exemple new_stmt = old_stmt.where(my_tbl.columns.my_col == 15). C'est nécessaire parce que l'instruction existante peut impliquer plusieurs tables.
À l'inverse, on ne peut insert un enregistrement que dans une seule table, donc vous n'avez pas à inclure le nom de la table lorsque vous utilisez values() pour insérer, p. ex. stmt = insert(my_table).values(my_col = 10).
Ici, le nom de la table est data. Vous pouvez exécuter repr(data) dans la console pour examiner la structure de la table.
Cette activité fait partie du cours
Introduction aux bases de données en Python
Instructions de l’exercice
- Importez
insertetselectdu modulesqlalchemy. - Construisez une instruction d'insertion
insert_stmtpour la tabledataafin d'attribuernameà'Anna',countà1,amountà1000.00etvalidàTrue. - Exécutez
insert_stmtavecconnectionet stockez lesresults. - Affichez l'attribut
.rowcountderesultspour voir combien d'enregistrements ont été insérés. - Construisez une instruction select pour interroger
dataafin d'obtenir l'enregistrement dont lenameest'Anna'. - Exécutez la solution pour afficher les résultats de l'exécution de l'instruction select.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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())