2012-09-30 11 views
9

私はPythonでMySQLdbパッケージを使用してmysqlクエリを実行しています。コードは次のようになります。row[4]私はoutputリストに保存する10進値を含んでmysqldbクエリから生の10進数値を取得

c=db.cursor() 
c.execute("""select * from table""") 
output = [] 
for row in c: 
    output.append(row[4]) 

問題は、私がこのようになっているすべての値です:Decimal('XX.XX')outputのリストに欲しいのはXX.XXです。スクリプトの終了時に、私のoutputリストは次のようになります。

[Decimal('10.02'), Decimal('20.24'), ...] 

しかし、私はそれだけで、このような数字を含める必要があります。

[10.02, 20.24, ...] 

私はそれをどのように行うのですか?

ありがとうございます!

答えて

8
c=db.cursor() 
c.execute("""select * from table""") 
output = [] 
for row in c: 
    output.append(float(row[4])) 
+0

それはありがとう! –

5

使用float()

output.append(float(row[4])) 

しかしfloat()のようなものになることができます。

In [184]: float(Decimal('10.02')) 
Out[184]: 10.02 

In [185]: float(Decimal('20.24')) 
Out[185]: 20.239999999999998 
+0

はい、これはokです、ありがとう! –

2

あなたは、上記の列出力で動作する汎用的なコードを書くしようとしている場合ソリューションは動作しません。その場合は、SELECTクエリを、列がStringとして返され、私たちが望むものの値を取得する方法で記述することができます。クエリは、以下の方法で囲ますることができ 、

SELECT 
CAST(COL1 AS CHAR) AS COL1, 
CAST(COL2 AS CHAR) AS COL2, 
. 
. 
. 
FROM TABLE; 
1
c=db.cursor() 
c.execute("""select * from table""") 
output = [] 
for row in c: 
    row_data = [] 
    for data in row: 
     if type(data) is Decimal: 
      row_data.append(float(data)) 
     else: 
      row_data.append(str(dat)) 
    output.append(row_data) 

;)

+0

小文字ですが、最後の行をインデントして残りのコードセグメントの書式設定に含める必要があります。 – toonice

関連する問題