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.
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:
- 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.
- Luego creamos el motor que servirá como conexión a la base de datos para realizar todas las operaciones de la base de datos.
- Cree el objeto de metadatos. El objeto de metadatos ` metadata ` contiene toda la información sobre nuestra base de datos.
- Utilice la información de metadatos para obtener la tabla de usuarios de la base de datos.
- 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 .
- 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