【问题标题】:Python MySQLdb cursor truncating valuesPython MySQLdb游标截断值
【发布时间】:2010-07-28 16:57:53
【问题描述】:

我遇到了一个有趣的问题。我有一个 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 中获取原始形式的数据而不被截断?

【问题讨论】:

  • 你可以做到for row in cursor: print(row),你知道吗?
  • 谢谢。我知道;我真的不只是打印行,我正在用这些值做其他事情。这只是我如何获取数据的一个示例。

标签: python mysql floating-point decimal


【解决方案1】:

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

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

【讨论】:

  • 我正在使用 DOUBLE。我会试试 DECIMAL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
  • 2012-11-16
  • 2018-02-27
  • 1970-01-01
  • 2013-10-18
  • 2014-09-25
  • 1970-01-01
相关资源
最近更新 更多