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

Raf*_* K. 9 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'
)
Run Code Online (Sandbox Code Playgroud)

但是当然,alembic没有'after'参数,因此这段代码失败了,而且我没有在docs中找到与'after'参数相当的东西.我只能将列附加到表的末尾.

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

小智 0

将它们切成单独的嵌套列表,以插入列之前的列结束(因此在本例中,创建一个以“id”列结束的单嵌套列表。

我们将该变量称为 id_col

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

您还可以添加嵌套列表,最终得到包含您要查找的内容的最终单个数据结构。

这里强调的是,您不必受限于专门使用 SQL 表格式。您可以将其转换为嵌套列表,然后使用列表方法组合后,将它们重新转换回您所需的 SQL 表。