将MySQL十进制类型的pymysql查询结果转换为Python float
我对Python(3.x)比较陌生,该语言的一个令人困惑的行为是十进制和浮点似乎是不同的类型(我假设这里的区别是double/float…) 使情况更复杂的是,我的Python逻辑读取/写入MySQL记录,字段定义为Decimal(具有多种格式) 在写端,我欺骗了像这样的将MySQL十进制类型的pymysql查询结果转换为Python float,python,mysql,mysql-python,pymysql,Python,Mysql,Mysql Python,Pymysql,我对Python(3.x)比较陌生,该语言的一个令人困惑的行为是十进制和浮点似乎是不同的类型(我假设这里的区别是double/float…) 使情况更复杂的是,我的Python逻辑读取/写入MySQL记录,字段定义为Decimal(具有多种格式) 在写端,我欺骗了像这样的pymysql编码器: import numpy as np import pymysql pymysql.converters.encoders[np.float64] = pymysql.converters.escape
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查询读取Decimal
字段时,似乎没有明显的方法来获取Pythonfloat
s。(这可能意味着悲观情绪,因此可能会丢失数据。)
人们在这里做什么?惯例是否只是到处使用十进制类型来避免这些向下/向上转换问题?那么通过pymysql的MySQL接口呢
我的总体想法是浮动/双重行为应该是自动的。语言对float/double进行区分可能是一件好事;但是,由于一个简单的+
或-
操作数不能很好地处理不同的类型,这段代码完全中断了,这确实令人困惑
谢谢