En este artículo, veremos cómo devolver filas distintas en SQLAlchemy con SQLite en Python.
Instalación
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
Creación de base de datos y tabla usando SQLite
Vamos a hacer uso de la base de datos sqlite3. Puede descargar la base de datos desde este enlace. Descomprima el archivo descargado en un directorio. Después de eso, cree una base de datos para trabajar. Siga el siguiente proceso para crear una base de datos llamada usuarios :
- Abra el símbolo del sistema y señale el directorio en el que se encuentra el archivo sqlite.exe .
- Cree una base de datos llamada usuarios usando el comando sqlite3 users.db
- Verifique la base de datos creada usando el comando .databases
Antes de que podamos ejecutar la consulta SQLAlchemy, necesitaremos una tabla de base de datos y algunos registros con los que trabajar. Creemos una tabla llamada empleados e insertemos algunos valores en ella. La consulta SQL sin procesar viene dada por:
CREATE TABLE employees ( emp_name VARCHAR(50), emp_email VARCHAR(50), emp_address VARCHAR(50) ); INSERT INTO employees VALUES ('John', 'john.doe@email.com', 'Washington'), ('Sundar', 'spichai@eail.com', 'California'), ('Rahul', 'rahul@email.com', 'Mumbai'), ('Sonia', 'sonia@email.com', 'Mumbai'), ('Aisha', 'aisha@email.com', 'California');
Las dos consultas anteriores crearán la tabla de empleados e insertarán 5 registros en ella. La consulta se puede ejecutar en un shell sqlite3 como se muestra a continuación:
Obtener registros distintos usando SQLAlchemy
Ahora, tenemos la tabla lista con nosotros para que podamos escribir el código SQLAlchemy para extraer los distintos registros de la tabla. Obtendremos los distintivos (es decir, registros únicos) de la tabla de empleados para el campo emp_address .
Python
import sqlalchemy as db # Define the Engine (Connection Object) engine = db.create_engine("sqlite:///users.db") # Create the Metadata Object meta_data = db.MetaData(bind=engine) db.MetaData.reflect(meta_data) # Get the `employees` table from the Metadata object EMPLOYEES = meta_data.tables['employees'] # SQLAlchemy Query to extract DISTINCT records query = db.select([db.distinct(EMPLOYEES.c.emp_address)]) # Fetch all the records result = engine.execute(query).fetchall() # View the records for record in result: print("\n", record)
Producción:
Explicación:
- Primero, importamos la biblioteca sqlalchemy como db para simplificar. Todos los objetos, métodos, etc. de sqlalchemy se importarán utilizando este 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 ‘metadatos’ contiene toda la información sobre nuestra base de datos.
- Utilice la información de los metadatos para obtener la tabla de ‘empleados’ de la base de datos.
- Ahora podemos escribir una consulta SQLAlchemy para obtener los registros únicos. Realizamos la operación DISTINCT en el campo emp_address para recuperar el conjunto único de valores en el campo respectivo usando la función ‘distinct()’ de SQLalchemy .
- Imprime todos los registros obtenidos. En el resultado, podemos ver que solo tenemos 3 valores de dirección de empleado distintos.
Publicación traducida automáticamente
Artículo escrito por apathak092 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA