我使用带有对象关系映射器的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中做到这一点。