2017-02-22 139 views
1

我使用PyMySQL來ping一個數據庫,並獲得價值了。我這樣做是這樣的:如何返回由.fetchone()返回的元組中的單個元素?

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

我測試了這個,它工作正常。現在的問題是我想在元組result得到公正的第一要素,我試着這樣做,像這樣:

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

然而,僅僅給我以下錯誤:

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

我在PyMySQL上找不到太多的文檔,但這看起來對我來說很合適,所以我不確定它爲什麼不起作用。這是我正在關注的example

+3

你就錯了。 'cursor.fetchone()'未返回一個元組,但[_dictionary_](https://docs.python.org/3/tutorial/datastructures.html#dictionaries)。至於爲什麼這是,我不完全確定。 –

回答

1

當你使用.fetchone()返回映射到特定鍵通常會在你的SQL數據庫列名的每個值的單個字典。所以,你的代碼應該是這個樣子:

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

如果你不知道的關鍵是什麼,然後只是print (results),它會打印出整部字典的所有鍵和相應的值。

此外,請注意,如果您的查詢返回多行,您應該使用.fetchall(),它將返回字典列表,因此您首先需要選擇一個元組,然後爲其鍵入一個鍵。

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