2017-02-22 12 views
1

私はPyMySQLを使ってデータベースにpingを行い、値を取得しています。私はそのようにしています:.fetchone()によって返されたタプル内の単一要素を返すにはどうすればよいですか?

cursor.execute(/*SQL Statement*/) 
    result = cursor.fetchone() 
    print (result) 

私はこれをうまく動作させています。今の問題は、私はタプルresultにちょうど最初の要素を取得しようとしていると私はそうのようにこれをやってみました:

Traceback (most recent call last): 
    File "myFile.py", line 20, in <module> 
    result = cursor.fetchone()[0] 
KeyError: 0 

I:ちょうど私に次のエラーを与える

しかし
cursor.execute(/*SQL Statement*/) 
    result = cursor.fetchone()[0] 
    print (result) 

PyMySQLに関する多くのドキュメンテーションを見つけることができませんが、それは私にとって正しいものです。なぜなら、なぜそれが機能していないのか分かりません。ここには私が従っていたexampleがあります。

+3

あなたは間違っています。 'cursor.fetchone()'はタプルを返しませんが、[_辞書](https://docs.python.org/3/tutorial/datastructures.html#dictionaries)を返します。なぜこれがどういうものなのか、私は確信していません。 –

答えて

1

.fetchone()を使用すると、各値が特定のキーにマップされた単一の辞書が返されます。これは通常、SQLデータベース内の列の名前になります。あなたは鍵がちょうどそのprint (results)が何であるかを知らないと、それはすべてのキーとそれに対応する値で辞書全体を印刷する場合は

cursor.execute(/*SQL Statement*/) 
result = cursor.fetchone() 
print (result[key]) 

:だからあなたのコードは次のようになります。

また、クエリで複数の行が返される場合は、.fetchall()を使用する必要があります。辞書のリストを返すので、最初にタプルを選択してからキーを渡す必要があります。

cursor.execute(/*SQL Statement*/) 
result = cursor.fetchone() 
print (result[index][key]) 
関連する問題