Python 如何将tuple cursor.fetchall列表转换为不同格式
我的mysql查询是多个连接Python 如何将tuple cursor.fetchall列表转换为不同格式,python,Python,我的mysql查询是多个连接cursor.fetchall(),它给出以下输出 [('Books',Decimal('10.000')、Decimal('0E-20')、None)、('Pencil',Decimal('66.66666')、Decimal('0E-20')、None)、('Pen',Decimal('100.0000')、Decimal('0E-20')、None)] 如何转换为以下格式 四舍五入到两位小数 无需替换为0 预料之外 [('Books'、'10.00'、'0.
cursor.fetchall()
,它给出以下输出
[('Books',Decimal('10.000')、Decimal('0E-20')、None)、('Pencil',Decimal('66.66666')、Decimal('0E-20')、None)、('Pen',Decimal('100.0000')、Decimal('0E-20')、None)]
如何转换为以下格式
- 四舍五入到两位小数
- 无需替换为0
[('Books'、'10.00'、'0.00',0),('Pencil'、'66.67'、'0.00',0),('Pen'、'100.00'、'0.00',0)]
您可以使用内置的数据库函数来实现这一点,而不是迭代整个结果集(可能会重复两次)
SELECT column_1, ROUND(column_2, 2), ROUND(column_3, 2), COALESCE(column_4, 0) FROM table_name;
输出:
可以这样做,您的(四舍五入)输出既有字符串也有浮点数。后者不应该四舍五入,因为它们不能总是被认为是精确的。您希望取整后的数字改为十进制类型吗?基本上,我需要对所有整数和字符串进行取整,如果是数字,则将其替换为0。使用
for
-循环更改列表中的数据。要将无替换为0,您可以在数据库中添加约束,将字段的默认值设置为0,并添加非空约束,这将确保在查询结果时没有得到任何结果。NameError:名称'Decimal'不正确defined@Nons您需要使用from decimal import decimal
from decimal import Decimal
sample = [
("Books", Decimal("10.000"), Decimal("0E-20"), None),
("Pencil", Decimal("66.66666"), Decimal("0E-20"), None),
("Pen", Decimal("100.0000"), Decimal("0E-20"), None),
]
result = [(i, "%.2f" % j, "%.2f" % k, l if l else 0) for i, j, k, l in sample]
print(result)
[
("Books", "10.00", "0.00", 0),
("Pencil", "66.67", "0.00", 0),
("Pen", "100.00", "0.00", 0),
]