【问题标题】:Psycopg2 query returning Decimal('value')Psycopg2 查询返回 Decimal('value')
【发布时间】:2014-10-25 01:01:20
【问题描述】:

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

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

有没有办法将它转换为只显示没有“Decimal()”的值?也许我的架构设置错误?

【问题讨论】:

    标签: python postgresql psycopg2


    【解决方案1】:

    非常烦人的问题,我自己遇到过。我通过将列转换为浮点数在 SQL 中解决了它。在您的查询中:

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

    【讨论】:

      【解决方案2】:

      您看到的是decimal.Decimal() 值的repr(),它可以精确表示十进制值,这是floats 不具备的功能。但是,如果您想看到一个漂亮的字符串表示形式,例如小数点后 6 位,则不会损失实用性,只需按照float 的方式格式化它,使用strformat

      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'
      

      【讨论】:

        猜你喜欢
        • 2022-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-24
        相关资源
        最近更新 更多