python - 将 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接口呢?
我的一般想法是浮动/双重行为应该是自动的。该语言在浮点/双精度之间施加了区别可能是一件好事。该代码完全中断,因为一个简单的+
或-
操作数不能优雅地与不同的类型一起工作,但确实令人困惑。
谢谢。
解决方案
推荐阅读
- database - 如何将增量加载到 SQL 中
- java - STS 工具套件一直挂着
- python - 子串匹配然后用迭代打印
- python - 指定用于 Keras Tensorflow 模型推理的 CPU
- jpeg - JPEG 品质因数压缩
- javascript - 无法在 IE/Edge 中对 RTCPeerConnection 使用“createDataChanne” - 有什么解决方案吗?
- javascript - 如何知道用户是点击图片左侧还是右侧?
- powershell - Powershell remove a range of lines from a text file
- c# - LINQ 语句以获取单个客户的最新订单
- swift - FCM iOS Push Notification 收不到任何通知