You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python查询数据库输出含Decimal标识该如何去除?

解决数据库查询输出含Decimal字样的问题

根本原因

你直接把查询返回的元组整体转字符串输出,元组序列化时会调用内部元素的__repr__方法,Decimal类型的repr结果就会带Decimal('xxx')标识。只要单独提取Decimal元素转普通字符串/数值类型再输出即可解决。

调整后的代码(推荐方案,Python侧处理)

你原来的代码还存在冗余的文件打开逻辑,会导致文件占用异常,一并修正:

cur.execute('SELECT tk_product_ord, SUM(tk_qty_ord) as qty_required '
        'FROM table1 WHERE tk_date = 15047 AND tk_prod_group = 11 '
        'GROUP BY tk_product_ord;')

answer = cur.fetchall()

# 删掉原来冗余的 file = open("test_data_output.txt") 和对应的close()代码
with open("test_data_output.txt", "w") as f:
    for prod_id, qty in answer:
        # 直接拼接两个元素,Decimal转str默认只会输出纯数值字符串
        f.write(f"({prod_id}, {qty})\n")

如果需要转成整数/浮点数做后续计算,也可以把qty替换成int(qty)或者float(qty)。

可选方案:SQL层面处理

如果不想在Python代码里做转换,也可以直接修改SQL语句把聚合结果转成字符串类型,不同数据库语法略有差异,示例如下:

-- MySQL 写法
SELECT tk_product_ord, CAST(SUM(tk_qty_ord) AS CHAR) as qty_required 
FROM table1 WHERE tk_date = 15047 AND tk_prod_group = 11 
GROUP BY tk_product_ord;

修改后返回的qty_required直接是字符串类型,无需额外转换即可正常输出。

内容的提问来源于stack exchange,提问作者haribo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 18:57:04