如何限制Flask-SQLAlchemy浮动到2个小数?



我有这个模型

class AccountsModel(db.Model):
accountId = db.Column(db.String(20), primary_key=True)
name = db.Column(db.String(20), nullable=False)
surname = db.Column(db.String(20), nullable=False)
total = db.Column(db.Float, nullable=False)

我希望我的数据库有"total"带有2位小数的数字,如0.00

像1.23这样的数字可以工作,但1.2仍然是1.2,1变成1.0

我试过:

total = db.Column(db.Float(precision=2), nullable=False)
total = db.Column(db.Float(2), nullable=False)
total = db.Column(db.Float(5,2), nullable=False)

我也尝试了数值而不是浮点数,但它破坏了一切。

如果您想要一个固定的精度/比例,您可能会寻找sqlalchemyNumeric类型而不是Float。浮点数不携带精度或比例信息。

这个微软文档将精度和比例定义为:

精度是指数字中位数的个数。小数是一个数中小数点右边的位数。例如,数字123.45的精度为5,比例为2。

因此,total列定义可以在sqlalchemy中定义为
total = db.Column(db.Numeric(precision=10, scale=2), nullable=False)

最新更新