Saltar al contenido

Cómo contar filas con SELECT COUNT

con SQLAlchemy?

Solución:

SELECT count(*) AS count_1
FROM "table"

Logré renderizar el siguiente SELECT con SQLAlchemy en ambas capas.

from sqlalchemy import select, func, Integer, Table, Column, MetaData

metadata = MetaData()

table = Table("table", metadata,
              Column('primary_key', Integer),
              Column('other_column', Integer)  # just to illustrate
             )   

print select([func.count()]).select_from(table)

Uso de la capa de expresión SQL

Uso de la capa ORM Query Tu solo subclase count() (probablemente lo haya hecho de todos modos) y proporcione un

from sqlalchemy.sql.expression import func

class BaseQuery(Query):
    def count_star(self):
        count_query = (self.statement.with_only_columns([func.count()])
                       .order_by(None))
        return self.session.execute(count_query).scalar()

método, como este. order_by(None) Tenga en cuenta que

restablece el orden de la consulta, que es irrelevante para el recuento. count(*) Con este método puede tener un filter en cualquier consulta ORM, que respetará todas lasjoin y

condiciones ya especificadas.

session.query(MyTable.col1).count()

Consulta solo por una columna conocida:

Necesitaba hacer un recuento de una consulta muy compleja con muchas combinaciones. Estaba usando las combinaciones como filtros, por lo que solo quería saber el recuento de los objetos reales. count () fue insuficiente, pero encontré la respuesta en los documentos aquí:

http://docs.sqlalchemy.org/en/latest/orm/tutorial.html

from sqlalchemy import func

session.query(func.count(User.id)).scalar() 

El código se vería así (para contar objetos de usuario):

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *