Alembic可以自动生成列更改吗?

Dex*_*ter 26 python postgresql sqlalchemy flask alembic

我可以alembic --autogenerate在添加/删除列时使用 .

但是,当我想修改例如200个字符到2000个字符的"url"列时,它不会检测到更改.

如何创建Alembic(使用SQLAlchemy),检测更改并自动生成脚本到我的模型的各种列的"大小",并为PostgreSQL创建"alter_column"命令?

编辑:

为什么不使用alembic自动添加:

op.alter_column('mytable', 'url', type_=sa.String(2000), existing_type=sa.String(length=200), nullable=True)
Run Code Online (Sandbox Code Playgroud)

Dex*_*ter 44

看起来我在reddit的/ r/flask上找到了答案.

http://www.reddit.com/r/flask/comments/1glejl/alembic_autogenerate_column_changes/cale9o0

只需在env.py的"run_migrations_online"函数中的context.configure()参数中添加"compare_type = True"即可.

    context.configure(
                connection=connection,
                target_metadata=target_metadata,
                compare_type=True
                )
Run Code Online (Sandbox Code Playgroud)

  • 这确实需要是默认值,或至少如何打开它更明显. (10认同)