2012-03-20 9 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

+0

((小数点( '118')、)、) トレースバック(最新の呼び出しの最後)(これは、 "印刷(このアウト)" である):で、 ファイル "file.1.py"、56行 result = float(thisout [0]) TypeError:float()引数は文字列または数字でなければなりません – Pauly

+0

ああ、あなたの計算には既に使用可能な形式です。 – bernie

答えて

0

を結果は単純である場合1タプルであれば、thisout [0]でbernieが言うように(あなたのコードは明らかに試行します)、アクセスできます。浮動小数点数を解析しようとすると、別のエラーが発生していると思います。スタックトレースまたは例外を送信します。

+0

結果= SQRT(thisout [0]) TypeError例外:フロートが – Pauly

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]) 例外TypeError:フロートであります必要なのは – Pauly

+0

@Pauly:この理由から、Pythonのコア開発者が 'sqrt()'メソッドを作成しています。ですから、あなたは単に次のようにします: 'result = thisout [0] .sqrt()' – bernie

+0

助けてくれてありがとう。しかし、何も動作していないようです。 result = thisout [0] .sqrt()AttributeError: 'タプル'オブジェクトに 'sqrt'属性がありません。 – Pauly

関連する問題