Python MySQLdb游标截断值
我遇到了一个有趣的问题。我有一个MySQL数据库,里面存储了一些非常精确的小数(比如说,0.00895406607247756,有17位小数)。因为这是科学数据,所以这种高精度非常重要。
我在用Python的MySQLdb库从数据库中选择数据:
cursor.execute("SELECT * FROM " ...etc...)
for n in range(cursor.rowcount):
row = cursor.fetchone()
print row
但不知为什么,当我获取到这些非常精确的小数时,它们被截断了,最多只保留14位小数。(也就是说,原来的小数变成了0.00895406607248)
有没有办法从MySQLdb中获取到原始数据,而不被截断呢?
1 个回答
3
你在用什么MySQL的数据类型来存储数据呢?是 DECIMAL(18,17)
吗?DECIMAL
类型可以有最多 65 位的精度。
如果你把MySQL的数据类型设置为 DECIMAL(...)
,那么MySQLdb会把数据转换成Python的 decimal.Decimal 对象,这样就能保持精度了。