添加新列时,在alembic中设置列顺序

时间:2018-05-30 10:05:55

标签: python sqlalchemy database-migration alembic

我正在努力找到一种干净的方式(没有原始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'参数,因此这段代码失败了,而且我没有在docs中找到与'after'参数相当的东西。我只能将列附加到表的末尾。

有人可以建议如何在alembic / sqlalchemy中实现我想要的吗?没有原始SQL可以吗?

1 个答案:

答案 0 :(得分:0)

将它们切片成单独的嵌套列表,在插入的列之前的列结束(因此,在这种情况下,创建一个嵌套列表,在“ id”列结束。

让我们调用该变量id_col

现在,您可以使用内置的“ extend”或“ append”在id列之后添加“ name”列。

您还可以添加嵌套列表,最后得到具有所需内容的最终单个数据结构。

这里强调的是,不必只使用SQL表格式来约束您。您可以将其转换为嵌套列表,然后使用列表方法组合后,将其重新转换为所需的SQL表。