SQLAlchemy在更新Postgres条目时更改浮点数的精度



我使用带有对象关系映射器的SQLAlchemy来访问Postgres数据库。一切都很好,只是当我升级数据库条目时,SQLAlchemy更改了一些(但不是所有(浮点数的精度。

假设我的数据库有一个表My_table,它看起来像这样:

id  |  my_float
----------------
1   | [NULL]
2   |  1.11
3   |  1.12

我获取id为1的条目并更新它:

from dbconnection import dbsession
from models import My_table
my_instance = dbsession.query(My_table).filter_by(id=1).first()
my_instance.my_float = 0.15
dbsession.commit()

我的Postgres数据库中的结果如下:

select * from my_table where id=1;
id  |  my_float
----------------
1   | 0.15000001

有没有一种方法可以让SQLAlchemy向Postgres写入确切的数字
编辑:我应该添加列my_float的类型为FLOAT(2)

否。它与SQLAlchemy没有特别的关系,但计算机是以二进制操作的。小数(以10为基数(表示中的绝大多数小数点值不能在二进制表示(以2为基数(中精确表示。所有浮点值基本上都是估计值。但是,您可以指定所需的小数位数。I、 然而,不知道如何在SQLAlchemy中做到这一点。

相关内容

  • 没有找到相关文章

最新更新