Sqlalchemy mysql FLOAT的精度和长度

时间:2018-02-09 12:10:21

标签: python mysql sqlalchemy

我正在尝试使用SQLAlchemy建模现有数据库,我非常接近。

我的观点是FLOAT类型。

在MySQL数据库中,它们是Float(10,2)

使用SQLAlchemy,无论我如何创建它们,我都无法复制它。

例如:

from sqlalchemy.dialects.mysql import FLOAT
from sqlalchemy.ext.declarative import declarative_base

connection_string = 'xxxxx'

engine = create_engine(connection_string, echo=True, encoding='utf-8')
Base = declarative_base(engine)

class TestTable(Base):
    __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))

2 个答案:

答案 0 :(得分:1)

我认为我说你正在努力设定精确度和规模?你试过了吗?

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

你对float_2和float_3的定义似乎没有使用导入的MySQL方言FLOAT类,并且可能在这里使用另一个类,这可能会增加混乱!

答案 1 :(得分:0)

如果您想获得适应性的scale,而不是固定的,我建议使用以下方法:

lat = Column(FLOAT(precision=10, decimal_return_scale=None))

更具体地说,让我们考虑以下lat浮点数:45.7421773

以下是参数的可能性:

lat_precision_adaptative_scale = Column(FLOAT(precision=32, decimal_return_scale=None))
lat_precision_fixed_scale = Column(FLOAT(precision=32, scale=10))
lat_no_precision_fixed_scale = Column(FLOAT(scale=3))
lat = Column(FLOAT)

它将插入以下结果: sql_alchemy_precision_scale_return_scale_parameter

希望有帮助!