如何解决如何在烧瓶迁移中重命名表
我有一个名为 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 举报,一经查实,本站将立刻删除。