Python 使用Sqlalchemy从Oracle获取十进制数据

Python 使用Sqlalchemy从Oracle获取十进制数据,python,oracle,sqlalchemy,Python,Oracle,Sqlalchemy,使用sqlalchemy QUERY = SELECT score as SCORE FROM USER1.TABLE1 WHERE id = 101 ORDER BY score DESC output = [] results = db.engine.execute(QUERY) [output.append(dict(row)) for row in results] 输出: [{'score':十进制('0.9556')},…] 分数数据类型-数字(16,14) 即使在用大写字母对其

使用
sqlalchemy

QUERY = SELECT score as SCORE FROM USER1.TABLE1 WHERE id = 101 ORDER BY score DESC

output = []
results = db.engine.execute(QUERY)
[output.append(dict(row)) for row in results]
输出:

[{'score':十进制('0.9556')},…]

分数数据类型-数字(16,14)

  • 即使在用大写字母对其进行了别名处理之后,我也会得到小写输出。
  • 我们可以删除输出中的
    十进制数吗?
  • 我试着把分数当作浮点数

     SELECT CAST(score as FLOAT) as SCORE FROM USER1.TABLE1 WHERE id = 101 ORDER BY score DESC
    
    我得到的输出像

    [{'score':0.9191699999999},…]


    通过添加代码块,使用
    计数器
    类可能是一个不错的选择

    from collections import Counter
    str=output[0]
    
    c = Counter()
    for k,v in str.items():
        c.update({k.upper(): '{0:f}'.format(v)})
    
    print(c)  
    
    到原始代码的以下部分。通过这种方式,您可以得到如下输出:


    计数器({'SCORE':'0.9556'})

    尝试将
    作为..
    @KaushikNayak的“SCORE”进行评分仍然很小好,我不熟悉
    sqlalchemy
    如何处理这些病例。我通常使用Cx_Oracle查询Oracle数据库。通常,Oracle的SQL引擎默认情况下会将所有标识符转换为大写。确实不需要双引号。所以,它是小写的,这意味着它必须和sqlalchemy的一些设置有关,sqlalchemy将它转换为小写。