我正在使用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, ...]
我该怎么做?
谢谢!
答案 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)
)