63860


Python3のコードの中で、データベースのテーブルの要素数を取得する際に、数字のみの結果を受け取りたいです。

例えば、

[code]

    "SELECT count (*) FROM sampleDB;"
    
[/code]

のSQLを使用した場合、結果は、

[code]

    [(10,)]
    
[/code]

のように、リストとタプルの形での値の取得となりますが、

[code]

    "[ ]"、"( )"、","
    
[/code]

が付かず、

[code]

    10
    
[/code]

のように、数字のみの結果を取得する方法はありますでしょうか？

それとも、結果取得後に自分で、必要のない記号等をなくすしか方法はないでしょうか？

ご教授のほどよろしくお願いします。

環境：  
・PostgreSQL  
・Psycopg2

【追記】実行コード

[code]

    conText = "host={} port={} dbname={} user={} password={}"
            conText = conText.format(PATH, PORT, DBNAME, USER, PASSWORD)
    
    connection = psycopg2.connect(conText)
            cur = connection.cursor()
    
            sql = "SELECT count (*) FROM sampleDB;"
    
            cur.execute(sql)
            rows = cur.fetchall()
            connection.commit()
            cur.close()
            connection.close()
    
            print(rows) # [(10,)]
    
[/code]


CC BY-SA 4.0
2020-03-14T05:26:07.023
63821
2020-03-15T07:50:14.340
2020-03-14T08:46:57.060
36988
36988
question
python sql postgresql
python3でSQL文"SELECT count (*)" 実行時に数字のみの結果を受け取りたい


**【質問に対する直接の回答】**

> それとも、結果取得後に自分で、必要のない記号等をなくすしか方法はないでしょうか？

はい、そうです。  
`cur.fetchall()`はm個の列(タプル)のn行(リスト)を返します。  
今回のSQLは１行１列を返しますが、`select`の結果がただ一つかどうかは`fetchall()`には分かりません。

[code]

    rows[0][0]
    
[/code]

で`count (*)`の結果を得ることができます。

**【気になったこと】**  
質問された方は`"[ ]"、"( )"、","`をデータに含まれる文字と認識されているようですが、  
これらの記号はタプルやリストなどデータの構造を表現しているだけです。  
これらの記号をなくすのではなく、データの構造(リストやタプル)に見合った方法でデータを取得すれば所望の結果を得られます。


CC BY-SA 4.0
2020-03-15T07:44:16.953
63860
2020-03-15T07:50:14.340
2020-03-15T07:50:14.340
35558
35558
63821
answer