问题描述

在使用flask_sqlachemy时,给price字段选择了Float类型,数据库用的mysql,生成数据库表后,发现


from sqlalchemy import Float,Column
price = Column(Float,default=0.00)



正确生成浮点型的方法,解决sqlachemy Float浮点型的坑,生成float类型时,长度和精度均为0,导致查询不到结果!_sqlalchemy

虽然能存储float类型,结果如下

正确生成浮点型的方法,解决sqlachemy Float浮点型的坑,生成float类型时,长度和精度均为0,导致查询不到结果!_sqlalchemy_02

但是查询时有问题!!!

正确生成浮点型的方法,解决sqlachemy Float浮点型的坑,生成float类型时,长度和精度均为0,导致查询不到结果!_mysql_03

根本查不到结果

错误示例,还有如下几种

错误示范

from sqlalchemy import Column,Float
from sqlalchemy.dialects.mysql import FLOAT


class TestTable(db.Model):
__tablename__ = 'my_test_table'
float_1 = Column(FLOAT(length=10, precision=2))
float_2 = Column(Float(10,2))
float_3 = Column(Float(as_decimal=True))
float_4 = Column(Float(precision=10, scale=2),default=0.00)


上面方法无论哪种生成的结果,依然长度为0.无法查询到

 正确生成浮点型的方法,解决sqlachemy Float浮点型的坑,生成float类型时,长度和精度均为0,导致查询不到结果!_sqlalchemy_04

解决办法

from sqlalchemy.dialects.mysql import FLOAT

float_5 = Column(FLOAT(precision=10, scale=2))


正确生成浮点型的方法,解决sqlachemy Float浮点型的坑,生成float类型时,长度和精度均为0,导致查询不到结果!_mysql_05