【发布时间】:2018-11-09 03:29:45
【问题描述】:
我正在努力寻找一种干净的方法(没有原始 SQL)来设置 alembic 中的列顺序。例如,我想在 'id' 列之后添加一个名为 'name' 的新列,如下所示:
from alembic import op
import sqlalchemy as sa
...
op.add_column(
'people',
sa.Column(
'name',
sa.String(),
nullable=False
),
after='id'
)
当然,alembic 没有 'after' 参数,因此此代码失败,并且我在文档中没有找到与此 'after' 参数等效的参数。我只能在表格末尾追加列。
有人可以建议如何在 alembic/sqlalchemy 中实现我想要的吗?没有原始 SQL 是否可行?
【问题讨论】:
-
你用的是什么数据库?
-
PostgreSQL 版本 9.6
-
您不能指定新列的位置:dba.stackexchange.com/questions/3276/…。这是 Postgres 中的一个限制。
-
MySQL 怎么样?
-
@dbatten 否,但根据 dev.mysql.com/doc/refman/5.6/en/alter-table.html 可以使用原始 SQL 命令(使用
[FIRST | AFTER col_name])
标签: python sqlalchemy database-migration alembic