Vip*_*pin 8 python sqlalchemy alembic
我想改变从
description = Column(String(250))
到
description = Column(String)
当我使用以下命令生成迁移文件时,它变空。
alembic revision --autogenerate -m "Changing the column size"
生成的迁移文件:
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
pass
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
pass
# ### end Alembic commands
Run Code Online (Sandbox Code Playgroud)
注意:我已经compare_type=True在 alembic 中有设置
context.configure(connection=connection, target_metadata=target_metadata, compare_type=True)
当我改为String(250)toString(500)而不是String(250)to时String,它会生成具有 alter 功能的迁移文件,似乎 alembic 不支持它!
任何帮助表示赞赏。
提前致谢!
Gor*_*son 10
如果 Alembic 无法检测到从String(250)到 的更改String(),那么您必须像这样解决它:
将模型中的列更改为String(251)并运行
alembic revision --autogenerate -m "Modified description column"\nRun Code Online (Sandbox Code Playgroud)\n生成一个修订文件,其中包含类似的内容
\ndef upgrade():\n # ### commands auto generated by Alembic - please adjust! ###\n op.alter_column(\'table1\', \'description\',\n existing_type=sa.VARCHAR(length=250, collation=\'SQL_Latin1_General_CP1_CI_AS\'),\n type_=sa.String(length=251),\n existing_nullable=True)\n # ### end Alembic commands ###\n\n\ndef downgrade():\n # ### commands auto generated by Alembic - please adjust! ###\n op.alter_column(\'table1\', \'description\',\n existing_type=sa.String(length=251),\n type_=sa.VARCHAR(length=250, collation=\'SQL_Latin1_General_CP1_CI_AS\'),\n existing_nullable=True)\n # ### end Alembic commands ###\nRun Code Online (Sandbox Code Playgroud)\n编辑该文件以将新列类型更改为String()\xe2\x80\xa6
def upgrade():\n # ### commands auto generated by Alembic - please adjust! ###\n op.alter_column(\'table1\', \'description\',\n existing_type=sa.VARCHAR(length=250, collation=\'SQL_Latin1_General_CP1_CI_AS\'),\n type_=sa.String(),\n existing_nullable=True)\n # ### end Alembic commands ###\n\n\ndef downgrade():\n # ### commands auto generated by Alembic - please adjust! ###\n op.alter_column(\'table1\', \'description\',\n existing_type=sa.String(),\n type_=sa.VARCHAR(length=250, collation=\'SQL_Latin1_General_CP1_CI_AS\'),\n existing_nullable=True)\n # ### end Alembic commands ###\nRun Code Online (Sandbox Code Playgroud)\n\xe2\x80\xa6 并编辑您的模型以供使用String()。然后运行迁移
alembic upgrade head\nRun Code Online (Sandbox Code Playgroud)\n当我使用 SQL Server 对此进行测试时,它将列类型从 更改varchar(250)为varchar(MAX)。