Psycopg2查询返回Decimal('value')

时间:2014-10-25 01:01:20

标签: python postgresql psycopg2

我在Python中查询postgresql数据库(通过psycopg2)。我的代码将值返回为十进制(' VALUE')。有没有办法在数据库中转换它? 代码示例:

query = "SELECT id FROM table;"
cur.execute(query)
results = cur.fetchall()
# Results = Decimal('some value')   

无论如何转换它只是显示没有"十进制()"的值?也许我的架构设置错了?

2 个答案:

答案 0 :(得分:3)

您所看到的是decimal.Decimal()值的repr(),它可以精确地表示十进制值,这是float无法使用的功能。但是,如果你想看到一个很好的字符串表示,比如6个小数位,那么就不会失去效用,只需按照floatstrformat的方式进行格式化。 In [7]: str(decimal.Decimal('0.1')) Out[7]: '0.1' In [13]: "{0:0.6f}".format(decimal.Decimal('0.1')) Out[13]: '0.100000'

{{1}}

答案 1 :(得分:0)

一个非常令人讨厌的问题,我自己遇到。我通过将列强制转换为浮点数在SQL中解决了该问题。在您的查询中:

query = "SELECT id::float as id FROM table;"
cur.execute(query)
results = cur.fetchall()
# Results = Decimal('some value')