Sqlalchemy mysql FLOAT精度和长度

问题描述 投票:0回答:2

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

我的重点是浮动类型。

在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))
python mysql sqlalchemy
2个回答
1
投票

我想我说的很对,您正在尝试设置精度和比例尺?您是否尝试过:

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

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


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

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.