我正在努力找到一种干净的方式(没有原始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可以吗?
答案 0 :(得分:0)
将它们切片成单独的嵌套列表,在插入的列之前的列结束(因此,在这种情况下,创建一个嵌套列表,在“ id”列结束。
让我们调用该变量id_col
现在,您可以使用内置的“ extend”或“ append”在id列之后添加“ name”列。
您还可以添加嵌套列表,最后得到具有所需内容的最终单个数据结构。
这里强调的是,不必只使用SQL表格式来约束您。您可以将其转换为嵌套列表,然后使用列表方法组合后,将其重新转换为所需的SQL表。