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)