2017-06-22 12 views
3

からCOUNT取得します。は、私が持っているSQLAlchemyの

resからカウント値を取得するにはどうすればよいですか?

RESがインデックスによってアクセスされていませんが、私はこれを考え出した:右の簡単な方法があるに違いありません

count=None 
for i in res: 
    count = res[0] 
    break 

?それは何ですか?私はまだそれを発見していない。 注:dbはpostgres dbです。データベースから返される列の反復可能であるを開梱と呼ばれる何を求めている、ResultProxyiterableあるので、我々はSQLAlchemyの中

# there will be single record 
record, = db.engine.execute('select count(id) from sometable') 
# this record consist of single value 
count, = record 

答えて

4

他の回答が動作している間、SQLAlchemyのは、スカラーのためのショートカットを提供しますResultProxy.scalar()としてクエリ:

count = db.engine.execute('select count(id) from sometable').scalar() 

scalar()は、最初の行の最初の列をフェッチし、結果セットを閉じ、または全く行が存在しない場合Noneを返します。クエリAPIを使用している場合は、Query.scalar()もあります。

3

count()クエリの場合、最初の要素にアクセスして列を取得し、次に別のインデックスを使用してその列の最初の要素(および唯一の要素)を取得します。

result = db.engine.execute('select count(id) from sometable') 
count = result[0][0] 

あなたはSQLAlchemyののORMを使用してすることが起こった場合は、ここで示したように、私は適切なモデルにQuery.count()方法を使用することをお勧めしが:http://docs.sqlalchemy.org/en/latest/orm/query.html?highlight=count#sqlalchemy.orm.query.Query.count