2 개의 마이그레이션 스크립트가 있습니다.이상한 놀랍게도 행동
스크립트 1 : 자료
from models import EntityProperty
from contextlib import contextmanager
# revision identifiers, used by Alembic.
revision = 'ecbde8fa83e3'
down_revision = None
branch_labels = None
depends_on = None
from alembic import op # noqa
import sqlalchemy as sa # noqa
@contextmanager
def session_scope():
session = sa.orm.session.Session(bind=op.get_bind())
try:
yield session
session.commit()
except:
session.rollback()
raise
finally:
session.close()
def _upgrade(session):
properties = session.query(EntityProperty).filter(
~EntityProperty._ptype.in_(["AI", "AO", "AV"])
).all()
for _property in properties:
_property._cov_increment = None
def upgrade():
with session_scope() as session:
_upgrade(session)
def downgrade():
pass
스크립트 2 : 나는 기본으로 다운 그레이드 할 때
revision = 'ab47480a7be7'
down_revision = u'ecbde8fa83e3'
branch_labels = None
depends_on = None
from alembic import op # noqa
import sqlalchemy as sa # noqa
def upgrade():
# add bacnet_enable to EP
with op.batch_alter_table(u'entityproperties', schema=None) as batch_op:
batch_op.execute("PRAGMA foreign_keys=OFF;")
batch_op.add_column(
sa.Column(
'bacnet_object', sa.Boolean(), nullable=True,
server_default=expression.true()))
def downgrade():
with op.batch_alter_table(u'entityproperties', schema=None) as batch_op:
batch_op.drop_column('bacnet_object')
는 지금, 나는 오류가 나타 얻을
그러한 열이 : entityproperties.bacnet_object
이 오류는 기본 스크립트 (스크립트 1)를 실행하는 동안 생성됩니다. 내가 생성 된 SQL을 확인하고는
왜 bacnet_object 열이 script1이 실행 중에 요구되고있다 AS entityproperties_bacnet_object
entityproperties.bacnet_object이있다? Script2의 다운 그레이드는 EntityProperty 테이블에서 열을 제거해야합니다. 여기서 내가 뭘 잘못하고 있니?
업데이트 : 두 번째 스크립트가 실행 된 후에 db를 확인했습니다. EntityProperty 테이블에 bacnet_object라는 열이 없지만 생성 된 SQL이 bacnet_object 열을 찾고 있습니까?