在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))
发送列表,该列表当前返回TypeError: Decimal('0.50') is not JSON serializable
。
是否有直接的方式去除这种“类型”信息?我一直在努力解决这个问题而没有成功,我发现之前的相关问题仅涵盖所有元素属于同一类型的情况(例如here)。谢谢你的任何提示!
答案 0 :(得分:0)
这是我克服这个问题的方法。
首先,我将查询结果转换为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))
中使用而没有错误。
非常具体的解决方法,但我认为无论如何都要发布它以提供至少一个问题的答案。