SQLAlchemy ORM: uso de consulta

Todas las sentencias SELECT generadas por SQLAlchemy ORM son construidas por el objeto Query. Proporciona una interfaz generativa, por lo que las sucesivas llamadas devuelven un nuevo objeto de consulta, una copia del anterior con criterios y opciones adicionales asociados.

Los objetos de consulta se generan inicialmente utilizando el método query () de la sesión de la siguiente manera:

q = session.query(mapped class)

La siguiente declaración también es equivalente a la declaración dada anteriormente:

q = Query(mappedClass, session)

El objeto de consulta tiene el método all () que devuelve un conjunto de resultados en forma de lista de objetos. Si lo ejecutamos en la mesa de nuestros clientes -

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

Esta declaración es efectivamente equivalente a la siguiente expresión SQL:

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

El objeto de resultado se puede recorrer utilizando el bucle For como se muestra a continuación para obtener todos los registros en la tabla de clientes subyacente. Aquí está el código completo para mostrar todos los registros en la tabla 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)

La consola de Python muestra la lista de registros a continuación:

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]

El objeto de consulta también tiene los siguientes métodos útiles:

No Señor. Método y descripción
1

add_columns()

Agrega una o más expresiones de columna a la lista de columnas de resultado que se devolverán.

2

add_entity()

Agrega una entidad mapeada a la lista de columnas de resultados que se devolverán.

3

count()

Devuelve un recuento de filas que devolvería esta consulta.

4

delete()

Realiza una consulta de eliminación masiva. Elimina de la base de datos las filas que coinciden con esta consulta.

5

distinct()

Aplica una cláusula DISTINCT a la consulta y devuelve la consulta resultante.

6

filter()

Aplica el criterio de filtrado dado a una copia de esta consulta, utilizando expresiones SQL.

7

first()

Devuelve el primer resultado de esta Consulta o Ninguno si el resultado no contiene ninguna fila.

8

get()

Devuelve una instancia basada en el identificador de clave principal proporcionado que proporciona acceso directo al mapa de identidad de la sesión propietaria.

9

group_by()

Aplica uno o más criterios GROUP BY a la consulta y devuelve la Consulta recién resultante

10

join()

Crea un SQL JOIN contra el criterio de este objeto de consulta y se aplica generativamente, devolviendo la consulta resultante.

11

one()

Devuelve exactamente un resultado o genera una excepción.

12

order_by()

Aplica uno o más criterios ORDER BY a la consulta y devuelve la consulta resultante.

13

update()

Realiza una consulta de actualización masiva y actualiza las filas que coinciden con esta consulta en la base de datos.