¿Cómo seleccionar solo una columna usando SQLAlchemy?

En este artículo, vamos a ver cómo seleccionar solo una columna usando SQLAlchemy en Python.

SQLAlchemy es un gran conjunto de herramientas de SQL con muchos componentes diferentes. Los dos componentes más grandes son SQLAlchemy Core y SQLAlchemy ORM. La principal diferencia entre ellos es que SQLAlchemy Core es un modelo centrado en el esquema, lo que significa que todo se trata como parte de la base de datos, es decir, filas, columnas, tablas, etc., mientras que SQLAlchemy Core utiliza una vista centrada en el objeto que encapsula el esquema con objetos comerciales. . SQLAlchemy es una implementación más pythonica. En esta publicación, veremos el núcleo de SQLAlchemy y ORM y cómo seleccionar solo una columna usándolo.

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

Antes de continuar con el código, asegúrese de tener una base de datos con la que trabajar. En los siguientes ejemplos, vamos a hacer uso de la base de datos mySQL. Siéntase libre de usar cualquier base de datos, pero la string de conexión variará en consecuencia.

La sintaxis, que se proporciona a continuación, es válida tanto para el núcleo de SQLAlchemy como para ORM.

Sintaxis: sqlalchemy.sql.expression.select(*args, **kw)

Crea una instrucción SQL SELECT

Núcleo de SQLAlchemy

Python

import sqlalchemy as db
 
# DEFINE THE ENGINE (CONNECTIO OBJECT)
engine = db.create_engine("mysql+pymysql://root:password@localhost/Geeks4Geeks")
 
# CREATE THE METADATA OBJECT
metadata_obj = db.MetaData()
 
# DEFINE THE PROFILE TABLE WITH 3 COLUMNS
profile = db.Table(
    'profile',
    metadata_obj,
    db.Column('email', db.String(50), primary_key=True),
    db.Column('name', db.String(100)),
    db.Column('contact', db.Integer),
)
 
# CREATE THE PROFILE TABLE IN THE DATABASE
metadata_obj.create_all(engine)
 
# INSERT RECORDS IN THE PROFILE TABLE
stmt = profile.insert().values(("amitpathak@zmail.com",
                                "Amit Pathak",
                                879456123))
engine.execute(stmt)
stmt = profile.insert().values(("amitmishra@zmail.com",
                                "Amit Mishra",
                                456789123))
engine.execute(stmt)
stmt = profile.insert().values(("ravipandey@zmail.com",
                                "Ravi Pandey",
                                321456987))
engine.execute(stmt)
 
# SQLAlCHEMY CORE QUERY TO FETCH SINGLE COLUMN (EMAIL)
query = db.select([profile.c.email])
 
# FETCH ALL THE RECORDS IN THE RESPONSE
result = engine.execute(query).fetchall()
 
# VIEW THE ENTRIES IN THE RESULT
for record in result:
    print("\n", record)

Producción:

En el código anterior, hemos usado SQLAlchemy core para seleccionar una columna de una tabla. Primero creamos una tabla de perfil con 3 columnas, a saber, correo electrónico, nombre y contacto. Luego ingresamos 3 registros diferentes en esta tabla. Luego, los registros se obtienen mediante el método de selección de la biblioteca sqlalchemy.

SQLAlchemy ORM

En el primer ejemplo, ya creamos la tabla de perfil y proporcionamos 3 registros en la tabla. En este ejemplo, nos enfocamos en cómo extraer una sola columna usando SQLAlchemy ORM. Como podemos ver, tanto ORM como core tienen la misma sintaxis cuando se trata de consultar una sola fila. La única diferencia es la forma en que definimos los metadatos de la tabla de perfiles. En el código ORM, parece más pythonico ya que se observa el uso de la clase python. Para este ejemplo, hemos obtenido la columna de nombre. Primero definimos la tabla de perfiles y luego usamos esta definición para obtener la columna de nombre de la tabla de perfiles.

Python

import sqlalchemy as db
from sqlalchemy.ext.declarative import declarative_base
 
Base = declarative_base()
 
# DEFINE THE ENGINE (CONNECTIO OBJECT)
engine = db.create_engine("mysql+pymysql://root:password@localhost/Geeks4Geeks")
 
# CREATE THE TABLE MODEL TO USE IT FOR QUERYING
class Profile(Base):
 
    __tablename__ = 'profile'
 
    email   = db.Column(db.String(50), primary_key=True)
    name    = db.Column(db.String(100))
    contact = db.Column(db.Integer)
 
# SQLAlCHEMY CORE QUERY TO FETCH SINGLE COLUMN (EMAIL)
query = db.select([Profile.name])
 
# FETCH ALL THE RECORDS IN THE RESPONSE
result = engine.execute(query).fetchall()
 
# VIEW THE ENTRIES IN THE RESULT
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 *