SQLAlchemy Core - Seleção de linhas

Neste capítulo, discutiremos sobre o conceito de seleção de linhas no objeto de tabela.

O método select () do objeto da tabela nos permite construct SELECT expression.

s = students.select()

O objeto selecionado se traduz em SELECT query by str(s) function como mostrado abaixo -

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

Podemos usar este objeto select como um parâmetro para o método execute () do objeto de conexão, conforme mostrado no código abaixo -

result = conn.execute(s)

Quando a instrução acima é executada, o shell Python ecoa seguindo a expressão SQL equivalente -

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

A variável resultante é equivalente ao cursor em DBAPI. Agora podemos buscar registros usandofetchone() method.

row = result.fetchone()

Todas as linhas selecionadas na tabela podem ser impressas por um for loop como dado abaixo -

for row in result:
   print (row)

O código completo para imprimir todas as linhas da tabela de alunos é mostrado abaixo -

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)

A saída mostrada no shell Python é a seguinte -

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

A cláusula WHERE da consulta SELECT pode ser aplicada usando Select.where(). Por exemplo, se quisermos exibir linhas com id> 2

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

for row in result:
   print (row)

Aqui c attribute is an alias for column. A seguinte saída será exibida no shell -

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

Aqui, temos que notar que o objeto select também pode ser obtido pela função select () no módulo sqlalchemy.sql. A função select () requer o objeto de tabela como argumento.

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