SQLAlchemy Core - Ejecución de expresión

En el capítulo anterior, hemos aprendido Expresiones SQL. En este capítulo, veremos la ejecución de estas expresiones.

Para ejecutar las expresiones SQL resultantes, tenemos que obtain a connection object representing an actively checked out DBAPI connection resource y entonces feed the expression object como se muestra en el código siguiente.

conn = engine.connect()

El siguiente objeto insert () se puede utilizar para el método execute ():

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

La consola muestra el resultado de la ejecución de la expresión SQL como se muestra a continuación:

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

A continuación se muestra el fragmento completo que muestra la ejecución de la consulta INSERT utilizando la técnica principal 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)

El resultado se puede verificar abriendo la base de datos usando SQLite Studio como se muestra en la siguiente captura de pantalla:

La variable de resultado se conoce como ResultProxy object. Es análogo al objeto de cursor DBAPI. Podemos adquirir información sobre los valores de clave principal que se generaron a partir de nuestra declaración utilizandoResultProxy.inserted_primary_key como se muestra a continuación -

result.inserted_primary_key
[1]

Para emitir muchas inserciones utilizando el método execute many () de DBAPI, podemos enviar una lista de diccionarios, cada uno de los cuales contiene un conjunto distinto de parámetros para insertar.

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

Esto se refleja en la vista de datos de la tabla como se muestra en la siguiente figura: