在 cursor.fetchall 中避免“小数('value')

Avoiding "Decimal('value') in cursor.fetchall

在 Python 脚本中,cursor.fetchall 命令返回一个元组列表,其中一些元素被标记为例如Decimal('0.50') 而不仅仅是 0.50.

myList= [(1, 'string1', None, None, 'string2', 0, 'string3'),
(1,   'string1',   Decimal('0.50'),   Decimal('2.5'),   'string2',   3,   'string3')]

我喜欢后一种形式(即 0.50)的原因是我正在尝试使用 print(json.dumps(result)) 发送列表,目前 returns TypeError: Decimal('0.50') is not JSON serializable.

有没有直接的方法可以去除这个 "type" 信息?我一直在努力解决这个问题,但没有成功,而且我发现以前的相关问题只涵盖所有元素都属于同一类型的情况(例如 )。感谢您的任何提示!

这是我克服这个问题的方法。

首先,我将查询结果转换为 pandas 数据帧:

df = pd.DataFrame(query_data)

然后,我就简单的把麻烦的列转成字符串:

df[2] = [str(r) for r in df[2]]

最后,我将数据帧转换为 csv 字符串:

df_csv = df.to_csv(sep=',', index = False, header = False) 

并且可以在print(json.dumps(result)).

中正常使用

非常具体的解决方法,但我想我还是 post 至少为问题提供一个答案。