l.b*_*oya 7 python sqlalchemy alembic
我已使用fastapi来处理sqlachemy模型面临的问题
sqlachemy第一次创建模型,但是当我们更改模型时不会影响 postgres 数据库。克服这个问题。
例如:将is_superuser重命名为is_admin
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column("user", sa.Column("is_admin", sa.Boolean(), nullable=True))
op.drop_column("user", "is_superuser")
# ### end Alembic commands ###
Run Code Online (Sandbox Code Playgroud)
看看删除is_superuser列 int 的重命名发生了什么
我知道棘手的解决方案是在迁移中自定义添加操作
op.alter_column('table_name','column_name',new_column_name='new column name')
如何在 fastapi 中使用 sqlalchemy 处理模型迁移,因为如果我在 alembic 迁移中犯了错误,那对我来说将是危险的。
有没有其他包或方法来处理sqlalchemy的迁移
用例:将表中的列重命名
is_superuser为is_adminuser
对于上面的情况,我们可以像下面这样编写迁移。
def upgrade():
op.alter_column('user', 'is_superuser', nullable=True, new_column_name='is_admin')
Run Code Online (Sandbox Code Playgroud)
现在,运行命令alembic upgrade head --sql以查看SQL将应用于数据库的实际内容。
ALTER TABLE user RENAME is_superuser TO is_admin;
Run Code Online (Sandbox Code Playgroud)
def upgrade():
op.execute('ALTER TABLE user RENAME is_superuser TO is_admin;')
Run Code Online (Sandbox Code Playgroud)
运行命令
alembic upgrade head以在数据库上应用迁移。
| 归档时间: |
|
| 查看次数: |
3061 次 |
| 最近记录: |