SQLAlchemy Core: selección de filas

En este capítulo, discutiremos sobre el concepto de seleccionar filas en el objeto de tabla.

El método select () del objeto de tabla nos permite construct SELECT expression.

s = students.select()

El objeto seleccionado se traduce en SELECT query by str(s) function como se muestra a continuación -

'SELECT students.id, students.name, students.lastname FROM students'

Podemos usar este objeto de selección como parámetro para ejecutar el método () del objeto de conexión como se muestra en el código siguiente

result = conn.execute(s)

Cuando se ejecuta la declaración anterior, el shell de Python hace eco de la siguiente expresión SQL equivalente:

SELECT students.id, students.name, students.lastname
FROM students

La variable resultante es equivalente al cursor en DBAPI. Ahora podemos buscar registros usandofetchone() method.

row = result.fetchone()

Todas las filas seleccionadas en la tabla se pueden imprimir mediante un for loop como se indica a continuación -

for row in result:
   print (row)

El código completo para imprimir todas las filas de la tabla de estudiantes se muestra a continuación:

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), 
)

s = students.select()
conn = engine.connect()
result = conn.execute(s)

for row in result:
   print (row)

La salida que se muestra en el shell de Python es la siguiente:

(1, 'Ravi', 'Kapoor')
(2, 'Rajiv', 'Khanna')
(3, 'Komal', 'Bhandari')
(4, 'Abdul', 'Sattar')
(5, 'Priya', 'Rajhans')

La cláusula WHERE de la consulta SELECT se puede aplicar usando Select.where(). Por ejemplo, si queremos mostrar filas con id> 2

s = students.select().where(students.c.id>2)
result = conn.execute(s)

for row in result:
   print (row)

aquí c attribute is an alias for column. La siguiente salida se mostrará en el shell:

(3, 'Komal', 'Bhandari')
(4, 'Abdul', 'Sattar')
(5, 'Priya', 'Rajhans')

Aquí, tenemos que tener en cuenta que el objeto de selección también se puede obtener mediante la función select () en el módulo sqlalchemy.sql. La función select () requiere el objeto de tabla como argumento.

from sqlalchemy.sql import select
s = select([users])
result = conn.execute(s)