我有两个迁移脚本。在
脚本一:基地
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:
^{pr2}$现在当我试图降级到基地时,我得到一个错误说明
no such column: entityproperties.bacnet_object
此错误是在执行基本脚本(脚本1)时生成的。我检查了生成的SQL,它有
entityproperties.bacnet_object AS entityproperties_bacnet_object
为什么在执行script1时请求bacnet_object列?Script2的降级应该从EntityProperty表中删除该列。我做错什么了?在
更新:我确实在第二个脚本执行后检查了数据库。在EntityProperty表中没有名为bacnet_object的列,但是生成的SQL仍然在寻找bacnet_object列?在
目前没有回答
相关问题 更多 >
编程相关推荐