En este artículo, vamos a ver cómo realizar la función de suma y conteo en SQLAlchemy contra una base de datos PostgreSQL en python.
Las operaciones SUMA y conteo se realizan en diferentes métodos usando diferentes funciones. Este tipo de operaciones matemáticas dependen de la base de datos. En PostgreSQL, Group by se realiza mediante una función denominada sum(), y la operación de recuento se realiza mediante count(). En SQLAlchemy, las funciones genéricas como SUM, MIN, MAX se invocan como funciones SQL convencionales usando el atributo func.
Algunas funciones comunes utilizadas en SQLAlchemy son count, cube, current_date, current_time, max, min, mode, etc.
Uso: func.sum(). func.group_by(), func.sum()
Cree una tabla de muestra para la demostración :
Importe las funciones necesarias del paquete SQLAlchemy. Y establezca una conexión con la base de datos PostgreSQL usando la función create_engine() como se muestra a continuación, cree una tabla llamada libros con las columnas book_id y book_price. Inserte un registro en las tablas usando la función insert() y valores() como se muestra.
Python3
# import necessary packages import sqlalchemy from sqlalchemy import create_engine, MetaData, Table, Column, Numeric, Integer, VARCHAR from sqlalchemy.engine import result # establish connections engine = create_engine( "postgresql+psycopg2://postgres:Saibaba97%40@127.0.0.1:5432/test") # initialize the Metadata Object meta = MetaData(bind=engine) MetaData.reflect(meta) # create a table schema books = Table( 'books', meta, Column('bookId', Integer, primary_key=True), Column('book_price', Numeric), Column('genre', VARCHAR), Column('book_name', VARCHAR) ) meta.create_all(engine) # insert records into the table statement1 = books.insert().values(bookId=1, book_price=12.2, genre = 'fiction', book_name = 'Old age') statement2 = books.insert().values(bookId=2, book_price=13.2, genre = 'non-fiction', book_name = 'Saturn rings') statement3 = books.insert().values(bookId=3, book_price=121.6, genre = 'fiction', book_name = 'Supernova') statement4 = books.insert().values(bookId=4, book_price=100, genre = 'non-fiction', book_name = 'History of the world') statement5 = books.insert().values(bookId=5, book_price=1112.2, genre = 'fiction', book_name = 'Sun city') # execute the insert records statement engine.execute(statement1) engine.execute(statement2) engine.execute(statement3) engine.execute(statement4) engine.execute(statement5)
Producción:
Implementando sum y order by en SQLAlchemy
Escribir una función de suma y orden tiene un procedimiento ligeramente diferente al de una consulta SQL convencional que se muestra a continuación
sqlalchemy.select([
nombre_tabla.c.nombre_columna,
sqlalchemy.func.sum(NombreTabla.c.nombre_columna)
]).group_by(Tablename.c.column_name).order_by(Tablename.c.column_name)
Obtenga la tabla de libros del objeto Metadata inicializado mientras se conecta a la base de datos y pase la consulta SQL a la función execute() y obtenga todos los resultados usando la función fetchall() y use un bucle for para iterar a través de los resultados.
Esta consulta SQL devuelve la suma de los precios de los libros según el género del libro y los ordena alfabéticamente según el género del libro.
Python3
# Get the `books` table from the Metadata object BOOKS = meta.tables['books'] # SQLAlchemy Query to use sum and order by function query = sqlalchemy.select([ BOOKS.c.genre, sqlalchemy.func.sum(BOOKS.c.book_price) ]).group_by(BOOKS.c.genre).order_by(BOOKS.c.genre) # 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 jssuriyakumar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA