0

我需要在我的 MYSQL 数据库中使用 DOUBLE 列。我已经阅读了文档,其中建议我使用精度为 64 的浮点数。但是,这似乎不起作用。我最终得到一个常规的浮点列,并且不存在所需的精度。

我也试过:

from sqlalchemy.dialects.mysql import DOUBLE  #and in the model:
item = db.Column(DOUBLE())

但是,在迁移时,Flask-Migrate 似乎无法区分上一列和新列之间的区别,并生成一个空迁移。

我读到这个:使用 Flask-SQLAlchemy 和https://github.com/miguelgrinberg/Flask-Migrate/issues/24在迁移的 Alembic 自动生成中没有检测到任何变化

并尝试在 alembic 设置中设置 compare_type=True ,但 Float 和 Double 类型之间仍然没有区别。

我知道我可以手动切换数据库中的列,但是如何使用 sqlalchemy 强制执行双精度列?

4

1 回答 1

2

设置应该工作(并且对我有用)compare_type=TrueEnvironmentContext如果您在尝试自动生成它时仍然遇到问题,您始终可以手动将此操作添加到迁移中。

def upgrade():
    #...
    op.alter_column('my_table', 'my_column', type_=DOUBLE, existing_nullable=False)
    #...

作为一般说明,Alembic 在自动生成迁移方面并不完美。最好先检查迁移脚本并根据需要对其进行编辑。

于 2014-08-28T15:19:31.733 回答