2012-05-30 17 views
32

का उपयोग कर तालिका में पंक्तियों की संख्या प्राप्त करें I Python में SQLAlchemy का उपयोग कर रहा हूं, और मैं जानना चाहता हूं कि कॉलम में पंक्तियों की कुल संख्या कैसे प्राप्त करें। मैं चर परिभाषित किया गया है: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() 

तब मैं उन्हें सूची से उपयोग कर सकते हैं, लेकिन यह मेरे स्मृति में एक ही बार में सब कुछ लोड करने के लिए की आवश्यकता है।

उत्तर

53

यह काम करना चाहिए

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

संपादित करें: एक और मेरी पहली से संबंधित जिस तरह से जब मैं टाइप

from sqlalchemy import func 
rows = session.query(func.count(Congress.id)).scalar() 
+0

कोशिश है कि, में उत्पादन मैं 'चयन गणना (shape_congress_districts_2012 है। आईडी) AS count_1 shape_congress_distults_2012' क्या इसका मतलब है कि मैंने गड़बड़ की है तालिका में इंटरफ़ेस का निर्माण करते समय मेरे कोड में कहीं और ऊपर? – dbmikus

+0

क्षमा करें, मेरे अपडेट किए गए उत्तर के साथ अभी आज़माएं;) –

+2

@dbmikus: क्वेरी खराब दिख सकती है लेकिन पूरी तरह से ठीक है। उस कुंजी के इंडेक्स का उपयोग करने के लिए पर्याप्त स्मार्ट नहीं है, जो कि उस कुंजी के इंडेक्स का उपयोग करने के लिए पर्याप्त स्मार्ट नहीं है, इसलिए केवल 'COUNT (*)' के बजाय 'COUNT (primary_key_column)' का उपयोग करना सामान्य अभ्यास है। – ThiefMaster