我在Python中查询postgresql数据库(通过psycopg2)。我的代码将值返回为十进制(' VALUE')。有没有办法在数据库中转换它? 代码示例:
query = "SELECT id FROM table;"
cur.execute(query)
results = cur.fetchall()
# Results = Decimal('some value')
无论如何转换它只是显示没有"十进制()"的值?也许我的架构设置错了?
答案 0 :(得分:3)
您所看到的是decimal.Decimal()
值的repr()
,它可以精确地表示十进制值,这是float
无法使用的功能。但是,如果你想看到一个很好的字符串表示,比如6个小数位,那么就不会失去效用,只需按照float
,str
或format
的方式进行格式化。 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')