python - 如何在 sqlalchemy for mysql 中的另一列之后添加一列?

标签 python mysql alembic

我有一个表,我需要在 a 列之后添加 a_1 列,表结构类似于 a、b、c、d 列?我该如何添加它?

下面的查询在 d 之后添加列,但我想在 a 之后添加列?

def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('sample_table', sa.Column('a_1', mysql.JSON(), nullable=True, ))
# ### end Alembic commands ###


def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('sample_table', 'a_1')
# ### end Alembic commands ###

最佳答案

add_column(table_name, column, schema=None)

使用当前迁移上下文发出“添加列”指令。

例如:

from alembic import op
from sqlalchemy import Column, String

op.add_column('organization',
    Column('name', String())
)

提供的 Column 对象还可以指定一个 ForeignKey,引用一个远程表名。 Alembic 将自动生成一个 stub “引用”表并发出第二个 ALTER 语句以单独添加约束:

from alembic import op
from sqlalchemy import Column, INTEGER, ForeignKey

op.add_column('organization',
    Column('account_id', INTEGER, ForeignKey('accounts.id'))
)

请注意,此语句使用 SQLAlchemy 库中的 Column 构造。特别是,要在数据库端创建的默认值是使用 server_default 参数指定的,而不是仅指定 Python 端默认值的 default :

from alembic import op
from sqlalchemy import Column, TIMESTAMP, func

# specify "DEFAULT NOW" along with the column add
op.add_column('account',
    Column('timestamp', TIMESTAMP, server_default=func.now())
)

参数 table_name – 父表的字符串名称。

column – 表示新列的 sqlalchemy.schema.Column 对象。

schema – 在其中操作的可选模式名称。要控制默认行为之外的架构引用,请使用 SQLAlchemy 构造 quoted_name。

来源https://alembic.sqlalchemy.org/en/latest/ops.html

关于python - 如何在 sqlalchemy for mysql 中的另一列之后添加一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66704308/

相关文章:

python - Google App Engine 后端/模块实例中的实际并发

python - 在 Anaconda 命令提示符中运行 Python 脚本的 Windows 快捷方式

MySQL从同一个表中连接多个列

python - Flask 迁移(Alembic)不创建迁移

python - 如何防止堆栈对索引进行排序?

python - 导入错误:没有名为 _analog_swig 的模块

MySQL:组玩家UID,显示总击杀数和活着角色的最新坐标

php - 如何从两个不同的表中进行 SELECT 和 COUNT 以在一个查询中获取帖子的 "like count"?

python - 使用 Flask-Migrate 在多个分支上工作

python - 如何在 Alembic 升级脚本中执行插入和更新?