Python MySQLdb游标截断值

时间:2010-07-28 16:57:53

标签: python mysql floating-point decimal

我遇到了一个有趣的问题。我有一个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 个答案:

答案 0 :(得分:3)

您使用什么MySQL数据类型来存储数据?是DECIMAL(18,17)吗? DECIMAL最多65 digits of precision

如果将MySQL数据类型设置为使用DECIMAL(...),那么MySQLdb会将数据转换为Python decimal.Decimal对象,这应保持精度。