SQLAlchemy ORM - Usando consulta

Todas as instruções SELECT geradas pelo SQLAlchemy ORM são construídas pelo objeto Query. Ele fornece uma interface generativa, portanto, chamadas sucessivas retornam um novo objeto Consulta, uma cópia do anterior com critérios e opções adicionais associados a ele.

Os objetos de consulta são inicialmente gerados usando o método query () da Session da seguinte forma -

q = session.query(mapped class)

A declaração a seguir também é equivalente à declaração dada acima -

q = Query(mappedClass, session)

O objeto de consulta tem o método all () que retorna um conjunto de resultados na forma de uma lista de objetos. Se o executarmos em nossa mesa de clientes -

result = session.query(Customers).all()

Esta declaração é efetivamente equivalente à seguinte expressão SQL -

SELECT customers.id 
AS customers_id, customers.name 
AS customers_name, customers.address 
AS customers_address, customers.email 
AS customers_email
FROM customers

O objeto de resultado pode ser percorrido usando o loop For conforme abaixo para obter todos os registros na tabela de clientes subjacente. Aqui está o código completo para exibir todos os registros na tabela Clientes -

from sqlalchemy import Column, Integer, String
from sqlalchemy import create_engine
engine = create_engine('sqlite:///sales.db', echo = True)
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

class Customers(Base):
   __tablename__ = 'customers'
   id = Column(Integer, primary_key =  True)
   name = Column(String)

   address = Column(String)
   email = Column(String)

from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind = engine)
session = Session()
result = session.query(Customers).all()

for row in result:
   print ("Name: ",row.name, "Address:",row.address, "Email:",row.email)

O console Python mostra a lista de registros conforme abaixo -

Name: Ravi Kumar Address: Station Road Nanded Email: [email protected]
Name: Komal Pande Address: Koti, Hyderabad Email: [email protected]
Name: Rajender Nath Address: Sector 40, Gurgaon Email: [email protected]
Name: S.M.Krishna Address: Budhwar Peth, Pune Email: [email protected]

O objeto Query também possui os seguintes métodos úteis -

Sr. Não. Método e Descrição
1

add_columns()

Ele adiciona uma ou mais expressões de coluna à lista de colunas de resultados a serem retornadas.

2

add_entity()

Ele adiciona uma entidade mapeada à lista de colunas de resultados a serem retornadas.

3

count()

Ele retorna uma contagem de linhas que esta consulta retornaria.

4

delete()

Ele executa uma consulta de exclusão em massa. Exclui linhas correspondidas por esta consulta do banco de dados.

5

distinct()

Ele aplica uma cláusula DISTINCT à consulta e retorna a Consulta recém-resultante.

6

filter()

Aplica o critério de filtragem dado a uma cópia desta Consulta, usando expressões SQL.

7

first()

Ele retorna o primeiro resultado desta Consulta ou Nenhum se o resultado não contém nenhuma linha.

8

get()

Ele retorna uma instância com base no identificador de chave primária fornecido, fornecendo acesso direto ao mapa de identidade da Sessão proprietária.

9

group_by()

Ele aplica um ou mais critérios GROUP BY à consulta e retorna a Consulta recém-resultante

10

join()

Ele cria um SQL JOIN contra o critério deste objeto Consulta e aplica generativamente, retornando a Consulta recém-resultante.

11

one()

Ele retorna exatamente um resultado ou levanta uma exceção.

12

order_by()

Ele aplica um ou mais critérios ORDER BY à consulta e retorna a Consulta recém-resultante.

13

update()

Ele executa uma consulta de atualização em massa e atualiza as linhas correspondentes a essa consulta no banco de dados.