web-dev-qa-db-fra.com

Obtenez le nombre de lignes dans le tableau à l'aide de SQLAlchemy

J'utilise SQLAlchemy en Python, et je veux savoir comment obtenir le nombre total de lignes dans une colonne. J'ai des variables définies:

engine = sqlalchemy.create_engine(url, ehco=False)
Session = sqlalchemy.orm.sessionmaker(bind=engine)
Session = session()
metadata = sqlalchemy.MetaData(engine)
Base = declarative_base(metadata=metadata)

# A class representing the shape_congress_districts_2012 table
class Congress(Base):
    __table= 'shape_congress_districts_2012'
    id = geoalchemy.Column(sqlalchemy.Integer, primary_key=True)
    name = geoalchemy.Column(sqlalchemy.Unicode)
    geom = geoalchemy.GeometryColumn(geoalchemy.Polygon(2))
    geom_simple = geoalchemy.GeometryColumn(geoalchemy.Polygon(2))
    area = geoalchemy.Column(sqlalchemy.Float)
    state_id = geoalchemy.Column(sqlalchemy.Integer)
    census_year = geoalchemy.Column(sqlalchemy.Date)

geoalchemy.GeometryDDL(Congress.__table__)

Je veux déterminer le nombre total de lignes dans la table sans avoir à attendre beaucoup de temps pour interroger la base de données. Actuellement, j'ai un peu de code:

rows = session.query(Congress).all()

Ensuite, je peux y accéder à partir de la liste, mais cela m'oblige à tout charger en mémoire à la fois.

43
dbmikus

Cela devrait fonctionner

rows = session.query(Congress).count()

EDIT: Une autre façon liée à mon premier essai

from sqlalchemy import func
rows = session.query(func.count(Congress.id)).scalar()
81
Diego Navarro