¿Cómo obtener columnas específicas en SQLAlchemy con filtro?

En este artículo, veremos cómo consultar y seleccionar columnas específicas usando SQLAlchemy en Python.

Para nuestros ejemplos, ya hemos creado una tabla de Estudiantes que usaremos:

Mesa de Estudiantes

Seleccionar una columna específica en SQLAlchemy según el filtro:

  • Para seleccionar una columna específica en SQLAlchemy

Sintaxis: sqlalchemy.select(*entidades)

entidades: Entidades para SELECCIONAR. Esto suele ser una serie de ColumnElement para el uso de Core y clases asignadas a ORM para el uso de ORM.

  • Para filtrar registros en SQLAlchemy

Sintaxis: sqlalchemy.query.filter(*criterio)

criterio: Criterio es uno o más criterios para seleccionar los registros.

Ejemplo 1: Seleccionar una columna específica basada en un solo filtro

Python

import sqlalchemy as db
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
  
Base = declarative_base()
  
# DEFINE THE ENGINE (CONNECTION OBJECT)
engine = db.create_engine("mysql+pymysql://\
root:password@localhost/Geeks4Geeks")
  
# CREATE THE TABLE MODEL TO USE IT FOR QUERYING
class Students(Base):
  
    __tablename__ = 'students'
  
    first_name = db.Column(db.String(50), 
                           primary_key=True)
    last_name  = db.Column(db.String(50), 
                           primary_key=True)
    course     = db.Column(db.String(50))
    score      = db.Column(db.Float)
  
# CREATE THE SESSION OBJECT
Session = sessionmaker(bind=engine)
session = Session()
  
# SELECTING COLUMN `first_name`, `last_name` WHERE `score > 80`
result = session.query(Students) \
    .with_entities(Students.first_name, Students.last_name) \
        .filter(Students.score > 80).all()
  
for r in result:
    print(r.first_name, r.last_name)

Producción:

Salida – Ejemplo 1

Ejemplo 2: Selección de una columna específica basada en múltiples filtros

Python3

import sqlalchemy as db
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
  
Base = declarative_base()
  
# DEFINE THE ENGINE (CONNECTION OBJECT)
engine = db.create_engine("mysql+pymysql://\
root:password@localhost/Geeks4Geeks")
  
# CREATE THE TABLE MODEL TO USE IT FOR QUERYING
class Students(Base):
  
    __tablename__ = 'students'
  
    first_name = db.Column(db.String(50),
                           primary_key=True)
    last_name  = db.Column(db.String(50), 
                           primary_key=True)
    course     = db.Column(db.String(50))
    score      = db.Column(db.Float)
  
# CREATE THE SESSION OBJECT
Session = sessionmaker(bind=engine)
session = Session()
  
# SELECTING COLUMN `first_name`, `score`
# WHERE `score > 80` AND `course` is STATISTICS
result = session.query(Students) \
    .with_entities(Students.first_name, Students.score) \
        .filter(Students.score > 80,
                Students.course.like('Statistics')).all()
  
for r in result:
    print(r.first_name, r.score)

Producción:

Salida – Ejemplo 2

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 *