SQLAlchemy Core - Exécution d'une expression

Dans le chapitre précédent, nous avons appris les expressions SQL. Dans ce chapitre, nous examinerons l'exécution de ces expressions.

Afin d'exécuter les expressions SQL résultantes, nous devons obtain a connection object representing an actively checked out DBAPI connection resource et alors feed the expression object comme indiqué dans le code ci-dessous.

conn = engine.connect()

L'objet insert () suivant peut être utilisé pour la méthode execute () -

ins = students.insert().values(name = 'Ravi', lastname = 'Kapoor')
result = conn.execute(ins)

La console affiche le résultat de l'exécution de l'expression SQL comme ci-dessous -

INSERT INTO students (name, lastname) VALUES (?, ?)
('Ravi', 'Kapoor')
COMMIT

Voici l'extrait de code complet qui montre l'exécution de la requête INSERT à l'aide de la technique de base de SQLAlchemy -

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
engine = create_engine('sqlite:///college.db', echo = True)
meta = MetaData()

students = Table(
   'students', meta, 
   Column('id', Integer, primary_key = True), 
   Column('name', String), 
   Column('lastname', String), 
)

ins = students.insert()
ins = students.insert().values(name = 'Ravi', lastname = 'Kapoor')
conn = engine.connect()
result = conn.execute(ins)

Le résultat peut être vérifié en ouvrant la base de données à l'aide de SQLite Studio comme indiqué dans la capture d'écran ci-dessous -

La variable de résultat est appelée ResultProxy object. Il est analogue à l'objet curseur DBAPI. Nous pouvons acquérir des informations sur les valeurs de clé primaire qui ont été générées à partir de notre déclaration en utilisantResultProxy.inserted_primary_key comme indiqué ci-dessous -

result.inserted_primary_key
[1]

Pour émettre de nombreuses insertions en utilisant la méthode execute many () de DBAPI, nous pouvons envoyer une liste de dictionnaires contenant chacun un ensemble distinct de paramètres à insérer.

conn.execute(students.insert(), [
   {'name':'Rajiv', 'lastname' : 'Khanna'},
   {'name':'Komal','lastname' : 'Bhandari'},
   {'name':'Abdul','lastname' : 'Sattar'},
   {'name':'Priya','lastname' : 'Rajhans'},
])

Cela se reflète dans la vue des données du tableau, comme illustré dans la figure suivante -