python - 添加新列时在 Alembic 中设置列​​顺序

标签 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' 参数,因此此代码失败,我在文档中没有找到与此 'after' 参数等效的参数。我只能在表的末尾附加该列。

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

最佳答案

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

让我们称这个变量为 id_col

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

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

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

关于python - 添加新列时在 Alembic 中设置列​​顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50601917/

相关文章:

python - Pyramid 架构迁移

mysql - Django AutoField 默认值错误

python - 为什么使用 Django REST Framework 处理 POST 请求对于大于 1024 个字符的正文大小会变慢?

python - 如何使用汤从页面中提取列中的数据

python - pyqt是否支持具有两个值的堆叠进度条?

python - 如何通过sqlalchemy从APScheduler获取最新数据?

python - SQLAlchemy 在测试期间恢复 auto_increment (pytest)

django - django 中的 makemigrations 损坏

python - 了解线程

mysql - Flask-Admin+SQLAlchemy 图像上传在 MySQL 生产环境中有效,但在 SQLite 测试用例 : InterfaceError 中无效