从mysqldb查询中获取原始十进制值

时间:2012-09-30 14:30:40

标签: python mysql mysql-python

我正在使用MySQLdb包在python中执行mysql查询。代码看起来像这样:

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

其中row[4]包含我想要存储在output列表中的小数值。

问题是我得到的每个值都是这样的:Decimal('XX.XX')我想要的output列表中的所有值都是XX.XX.在脚本的末尾,我的output列表如下所示:

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

但我需要它来包含数字,如下:

[10.02, 20.24, ...]

我该怎么做?

谢谢!

4 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分: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

答案 2 :(得分:3)

如果您正在尝试编写对列输出进行操作的通用代码,则上述解决方案将无法进行锻炼。在这种情况下,我们可以以返回String的方式编写SELECT查询,并获取我们想要的值。 查询可以用以下方式构建,

SELECT 
 CAST(COL1 AS CHAR) AS COL1,
 CAST(COL2 AS CHAR) AS COL2,
 .
 .
 .
FROM TABLE;

答案 3 :(得分:2)

from decimal import Decimal
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)