Python SQLAlchemy: agrupar por y devolver la fecha máxima

En este artículo, veremos cómo usar Group_by y devolver SQLAlchemy de fecha máxima en Python.

Instalando SQLAlchemy

SQLAlchemy está disponible a través del paquete de instalación pip.

pip install sqlalchemy

Sin embargo, si está utilizando un matraz, puede utilizar su propia implementación de SQLAlchemy. Se puede instalar usando –

pip install flask-sqlalchemy

Ejemplo

Antes de seguir adelante, necesitamos tener una base de datos y una tabla con la que trabajar. Para este ejemplo, estamos usando la base de datos mySQL y hemos creado una tabla de usuarios . La tabla tiene 6 columnas y 7 registros como se muestra a continuación.

Tabla de usuarios – mySQL

En la tabla anterior, podemos ver que hay 3 usuarios distintos, a saber, John, Emma y Liam. AGRUPAREMOS POR sobre la base de su nombre y apellido . La tabla tiene un campo created_on que es un tipo de datos TIMESTAMP. Se utilizará para elegir la fecha máxima para un usuario distinto.

Acercarse:

  1. Primero, importamos la biblioteca sqlalchemy como db para simplificar. Todos los objetos, métodos, etc. de sqlalchemy se importarán utilizando el prefijo db para una mayor claridad.
  2. Luego creamos el motor que servirá como conexión a la base de datos para realizar todas las operaciones de la base de datos.
  3. Cree el objeto de metadatos. El objeto de metadatos ` metadata ` contiene toda la información sobre nuestra base de datos.
  4. Utilice la información de metadatos para obtener la tabla de usuarios de la base de datos.
  5. Ahora podemos escribir una consulta SQLAlchemy para obtener los registros requeridos. Realizamos la operación GROUP BY en los campos first_name y last_name y en la consulta SELECT recuperamos la fecha máxima usando la función `func.max()` de SQLalchemy .
  6. Imprime todos los registros obtenidos. En la salida podemos ver que tenemos solo 3 usuarios distintos y el campo updated_on correspondiente para todos los usuarios es la fecha máxima que tenemos en las entradas de la tabla.

A continuación se muestra la implementación:

Python

import sqlalchemy as db
from sqlalchemy.engine import result
  
# Define the Engine (Connection Object)
engine = db.create_engine(
    "mysql+pymysql://root:password@localhost/Geeks4Geeks")
  
# Create the Metadata Object
meta_data = db.MetaData(bind=engine)
db.MetaData.reflect(meta_data)
  
# Get the `users` table from the Metadata object
USERS = meta_data.tables['users']
  
# SQLAlchemy Query to GROUP BY and fetch MAX date
query = db.select([
    USERS.c.email,
    USERS.c.first_name,
    USERS.c.last_name,
    db.func.max(USERS.c.created_on)
]).group_by(USERS.c.first_name, USERS.c.last_name)
  
# Fetch all the records
result = engine.execute(query).fetchall()
  
# View the records
for record in result:
    print("\n", record)

Producción:

Publicación traducida automáticamente

Artículo escrito por apathak092 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *