Używam SQLAlchemy w Pythonie, i chcę wiedzieć, jak uzyskać całkowitą liczbę wierszy w kolumnie. Mam zdefiniowane zmienne:Uzyskaj liczbę wierszy w tabeli przy użyciu 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__)
Chcę określić całkowitą liczbę wierszy w tabeli bez konieczności oczekiwania na całą masę czasu kwerendy bazy danych. Obecnie mam trochę kodu:
rows = session.query(Congress).all()
Następnie mogę uzyskać do nich dostęp z listy, ale wymaga to natychmiastowego załadowania wszystkiego do pamięci.
Po wpisaniu że wyjście mogę to 'SELECT count (shape_congress_districts_2012. id) AS count_1 FROM shape_congress_districts_2012' Czy to oznacza, że pomieszałem gdzieś indziej w moim kodzie podczas konstruowania interfejsu do stołu? – dbmikus
Przepraszamy, spróbuj teraz z moją zaktualizowaną odpowiedzią;) –
@dbmikus: zapytanie może wyglądać nieprzyjemnie, ale jest idealnie w porządku. Powszechną praktyką jest używanie 'COUNT (primary_key_column)' zamiast po prostu 'COUNT (*)' ponieważ w bazie danych, która nie jest wystarczająco inteligentna, aby użyć indeksu tego klucza automatycznie, zapytanie może być szybsze w ten sposób. – ThiefMaster