首页 > 解决方案 > 将 MySQL Decimal 类型的 pymysql 查询结果转换为 Python float

问题描述

我对 Python (3.x) 比较陌生,该语言的一个令人困惑的行为是 Decimal 和 float 似乎是不同的类型(我认为这里的区别是 double / float 之间的常见区别......)。

使情况复杂化的是,我的 Python 逻辑读取/写入 MySQL 记录的字段定义为十进制(具有多种格式)。

在写入方面,我设计了pymysql这样的编码器:

import numpy as np
import pymysql

pymysql.converters.encoders[np.float64] = pymysql.converters.escape_float
pymysql.converters.conversions = pymysql.converters.encoders.copy()
pymysql.converters.conversions.update(pymysql.converters.decoders)

我相信,这有助于 Python 小数对 MySQL 记录的持久性。

但是在读取方面,我们通过pymysql查询float读取字段时,似乎没有明显的方式获取Python 。Decimal(也许这将代表一种沮丧,因此可能会丢失数据。)

人们在这里做什么?约定是否只是在任何地方使用 Decimal 类型来规避这些向下/向上转换问题?而通过pymysql的MySQL接口呢?

我的一般想法是浮动/双重行为应该是自动的。该语言在浮点/双精度之间施加了区别可能是一件好事。该代码完全中断,因为一个简单的+-操作数不能优雅地与不同的类型一起工作,但确实令人困惑。

谢谢。

标签: pythonmysqlmysql-pythonpymysql

解决方案


推荐阅读