我正在尝试对我的数据库进行一些数据库架构更改,使用 sqlalchemy table.create 和 sqlalchemy-migrate table.rename 方法,以及一些插入到选择语句中。我想将所有这些包装在一个事务中。我不知道该怎么做。这是我尝试过的:
engine = sqlalchemy.engine_from_config(conf.local_conf, 'sqlalchemy.')
trans = engine.connect().begin()
try:
old_metatadata.tables['address'].rename('address_migrate_tmp', connection=trans)
new_metatadata.tables['address'].create(connection=trans)
except:
trans.rollback()
raise
else:
trans.commit()
但它错误:
AttributeError: 'RootTransaction' object has no attribute '_run_visitor'
(我尝试使用 sqlalchemy-migrate column.alter(name='newname') 但该错误,并且在事务中不起作用,因此使我的数据库处于损坏状态。我还需要重命名多个列,所以我决定推出我自己的代码。)