如何在烧瓶迁移中重命名表

问题描述

我有一个名为 company 的模型,我想将其重命名accounts 并且其中有一些数据,但是每当我在制作后运行 flask migrate 命令时模型名称的变化,它实际上创建了这个迁移文件

"""empty message

Revision ID: ead37a7b46e2
Revises: 1463685ab18f
Create Date: 2021-06-23 18:58:51.575071

"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import MysqL

# revision identifiers,used by Alembic.
revision = 'ead37a7b46e2'
down_revision = '1463685ab18f'
branch_labels = None
depends_on = None


def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.create_table('accounts',sa.Column('created_at',sa.DateTime(),nullable=True),sa.Column('updated_at',sa.Column('id',sa.Integer(),nullable=False),sa.Column('name',sa.String(length=255),sa.Column('slug',sa.String(length=3),sa.Column('website_url',sa.String(length=2000),sa.Column('phone',sa.String(length=30),sa.Column('company_upload_directory',sa.String(length=50),sa.Column('max_users',sa.Column('can_supply',sa.Column('can_demand',sa.Column('email',sa.PrimaryKeyConstraint('id')
    )
    op.drop_table('company')
    op.drop_constraint('address_ibfk_1','address',type_='foreignkey')
    op.create_foreign_key(None,'accounts',['company_id'],['id'],ondelete='CASCADE')
    op.drop_constraint('company_groups_ibfk_1','company_groups',ondelete='CASCADE')
    op.drop_constraint('company_plan_ibfk_1','company_plan',ondelete='CASCADE')
    op.drop_constraint('company_services_ibfk_1','company_services',ondelete='CASCADE')
    op.drop_constraint('company_users_ibfk_1','company_users',ondelete='CASCADE')
    op.drop_constraint('service_company_ibfk_1','service_company',ondelete='CASCADE')
    # ### end Alembic commands ###


def downgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.drop_constraint(None,type_='foreignkey')
    op.create_foreign_key('service_company_ibfk_1','company',ondelete='CASCADE')
    op.drop_constraint(None,type_='foreignkey')
    op.create_foreign_key('company_users_ibfk_1',type_='foreignkey')
    op.create_foreign_key('company_services_ibfk_1',type_='foreignkey')
    op.create_foreign_key('company_plan_ibfk_1',type_='foreignkey')
    op.create_foreign_key('company_groups_ibfk_1',type_='foreignkey')
    op.create_foreign_key('address_ibfk_1',ondelete='CASCADE')
    op.create_table('company',MysqL.DATETIME(),MysqL.INTEGER(display_width=11),autoincrement=True,MysqL.VARCHAR(length=255),MysqL.VARCHAR(length=3),MysqL.VARCHAR(length=2000),MysqL.VARCHAR(length=30),MysqL.VARCHAR(length=50),autoincrement=False,sa.PrimaryKeyConstraint('id'),MysqL_default_charset='latin1',MysqL_engine='InnoDB'
    )
    op.drop_table('accounts')
    # ### end Alembic commands ###

正如您在迁移文件中看到的,它使用了 op.drop_table('company'),因此我收到外键约束错误。我认为,而不是这些,它应该使用类似 rename table 命令的东西。

任何人都可以在这里帮助我吗,我如何使用烧瓶迁移重命名表?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...