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 schéma que l’instruction select.
Elle utilise une instruction insert où vous indiquez la table en argument, puis vous fournissez les données à insérer via 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 celle de my_col_2 égale à "Example".
Remarquez la différence de syntaxe : lorsque vous ajoutez un where à une instruction existante, vous incluez le nom de la table ainsi que celui de la colonne, par exemple new_stmt = old_stmt.where(my_tbl.columns.my_col == 15). C’est nécessaire car l’instruction existante peut impliquer plusieurs tables.
À l’inverse, on ne peut insert un enregistrement que dans une seule table ; il n’est donc pas nécessaire d’inclure le nom de la table lorsque vous utilisez values() pour insérer, par exemple 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.
Cet exercice fait partie du cours
Introduction aux bases de données en Python
Instructions
- Importez
insertetselectdepuis le modulesqlalchemy. - Construisez une instruction d’insertion
insert_stmtpour la tabledataafin de définirnameà'Anna',countà1,amountà1000.00etvalidàTrue. - Exécutez
insert_stmtavecconnectionet stockez le résultat dansresults. - Affichez l’attribut
.rowcountderesultspour voir combien d’enregistrements ont été insérés. - Construisez une instruction
selectpour interrogerdataet récupérer 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 cet exemple de code.
# 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())