我在Python中使用SQLAlchemy,我想知道如何获取一列中的总行数。我定义了变量:
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): __tablename__ = '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__)
我想确定表中的总行数,而不必等待一整堆查询数据库的时间。目前,我有一些代码:
rows = session.query(Congress).all()
然后,我可以从列表中访问它们,但这要求我立即将所有内容加载到内存中。
这应该工作
rows = session.query(Congress).count()
编辑: 与我的第一次尝试有关的另一种方法
from sqlalchemy import func rows = session.query(func.count(Congress.id)).scalar()