En este artículo, veremos cómo seleccionar el conteo de filas usando SQLAlchemy en Python.
Como vamos a usar MySQL en esta publicación, también instalaremos un conector SQL para MySQL en Python. Sin embargo, ninguna de las implementaciones de código cambia con el cambio en la base de datos, excepto los conectores SQL.
pip install pymysql
Usaremos la base de datos sakila de muestra de mySQL. En este artículo, cubriremos 2 ejemplos, uno para las capas SQLAchemy Core y ORM. En ambos ejemplos, contaremos el número de registros presentes en la tabla de actores dentro de la base de datos sakila . Si no tiene la base de datos sakila y desea seguir este artículo sin instalarlo, use el script SQL presente en el enlace que se menciona a continuación para crear el esquema requerido y la tabla de actores junto con los registros. Guión de mesa de actor Sakila
La consulta SQL que estamos viendo en los dos ejemplos siguientes es:
SELECT COUNT(*) FROM sakila.`actor`;
Núcleo de SQLAlchemy
SQLAlchemy Core es un modelo centrado en el esquema que significa que todo se trata como parte de la base de datos, es decir, filas, columnas, tablas, etc. En el ejemplo anterior, hemos creado el objeto de metadatos para acceder a los objetos de la base de datos como la tabla. Usando este objeto obtenemos los metadatos de la tabla de actores. Esta información de metadatos se usa luego para consultar la tabla usando la sintaxis de SQLAlchemy que se menciona a continuación.
Sintaxis: sqlalchemy.select([sqlalchemy.func.count()]).select_from(sqlalchemy.DeclarativeMeta).scalar()
Python
import sqlalchemy as db # DEFINE THE ENGINE (CONNECTION OBJECT) engine = db.create_engine("mysql+pymysql://root:password@localhost/sakila") # CREATE THE METADATA OBJECT TO ACCESS THE TABLE meta_data = db.MetaData(bind=engine) db.MetaData.reflect(meta_data) # GET THE `actor` TABLE FROM THE METADATA OBJECT actor_table = meta_data.tables['actor'] # SELECT COUNT(*) FROM Actor result = db.select([db.func.count()]).select_from(actor_table).scalar() print("Count:", result)
Producción:
Count: 200
SQLAlchemy ORM
SQLAlchemy Core utiliza una vista centrada en objetos que encapsula el esquema con objetos comerciales. Es una implementación más pythonica ya que podemos ver las tablas representadas en el formato de clase. Hemos usado este objeto de clase para consultar la tabla de actores usando la sintaxis de SQLAlchemy que se menciona a continuación.
Sintaxis: sqlalchemy.orm.Session.query(sqlalchemy.DeclarativeMeta).count()
Python
import sqlalchemy as db from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() # DEFINE THE ENGINE (CONNECTION OBJECT) engine = db.create_engine("mysql+pymysql://root:password@localhost/sakila") # CREATE THE TABLE MODEL TO USE IT FOR QUERYING class Actor(Base): __tablename__ = 'actor' actor_id = db.Column(db.SmallInteger, primary_key=True, autoincrement=True) first_name = db.Column(db.String(45)) last_name = db.Column(db.String(45)) last_update = db.Column(db.DateTime) city = db.Column(db.String(20)) # CREATE A SESSION OBJECT TO INITIATE QUERY IN DATABASE from sqlalchemy.orm import sessionmaker Session = sessionmaker(bind = engine) session = Session() # SELECT COUNT(*) FROM Actor result = session.query(Actor).count() print("Count:", result)
Producción:
Count: 200
Publicación traducida automáticamente
Artículo escrito por apathak092 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA