在 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 至少为问题提供一个答案。
在 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 至少为问题提供一个答案。