2012-03-20 67 views
0
db_quote_cursor.execute("""select lastince 
          from `here` 
          order by `date` desc, `time` desc 
          limit 1""") 
thisout= db_quote_cursor.fetchone() 

thisout是一個浮點值。我需要對它進行計算,但不能將其作爲元組中的float進行轉換。python mysqldb單行/列返回元組值

!work(pleasework=float(thisout[0]))

我試圖將其轉換爲一個列表,那也不能工作。當我不想/需要循環訪問元組時,如何直接訪問元組中的值?還是其他什麼東西,也許......

這就是我從數據庫中得到的:

print(this out) 
# -> ((Decimal('118'),),) 

這是我得到的錯誤:

>>> result = float(thisout[0]) 
Traceback (most recent call last): File "file.1.py", line 56, in <module> 
TypeError: float() argument must be a string or a number 
+1

請發佈確切的錯誤消息,你越來越。謝謝。 – bernie 2012-03-20 17:52:03

+0

((十進制( '118'),),)(這是 「打印(這一點)」) 回溯(最近通話最後一個): 文件 「file.1.py」 56行,在 結果= float(thisout [0]) TypeError:float()參數必須是字符串或數字 – Pauly 2012-03-20 19:26:14

+0

啊,所以它已經以可用格式進行計算。 – bernie 2012-03-20 19:28:41

回答

0

如果結果是一個簡單的1元組,你可以像bernie說的那樣訪問它(並且你的代碼顯然試圖用這個[0])。我猜測你在解析浮點數時有不同的錯誤;發佈堆棧跟蹤或異常。

+0

結果= SQRT(thisout [0]) 類型錯誤:浮子需要 – Pauly 2012-03-22 15:39:10

1

現在您發佈回溯的情況更加清晰。謝謝。

您將收回一個Decimal對象。
事實上,這一點也不如浮動。

你不必將它轉換,並且可以簡單地開始你的計算:

thisout[0] += 1 # works fine 

但是請注意,你不能做:

thisout[0] += 1.0 # this is a TypeError 

你會怎麼做,而不是上面的情況:

import decimal as dc 
thisout[0] += dc.Decimal('1.0') 
+0

可能更好,但不用於計算我需要做的: 結果= SQRT(thisout [0]) 類型錯誤:一個浮子需要 – Pauly 2012-03-22 15:36:58

+0

@Pauly:正因如此,Python核心開發人員爲您創建了一個'sqrt()'方法。所以你可以簡單地做:'result = thisout [0] .sqrt()' – bernie 2012-03-22 16:00:54

+0

謝謝你的幫助。然而,似乎沒有任何工作。 result = thisout [0] .sqrt() AttributeError:'元組'對象沒有屬性'sqrt' – Pauly 2012-03-22 16:13:02