Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlalchemy 设计迁移脚本以使用Alembic事务_Sqlalchemy_Alembic - Fatal编程技术网

Sqlalchemy 设计迁移脚本以使用Alembic事务

Sqlalchemy 设计迁移脚本以使用Alembic事务,sqlalchemy,alembic,Sqlalchemy,Alembic,我一直在编写一个Alembic升级脚本,用于我的SQLAlchemy/SQLite数据库。该脚本的目的是将一列从十进制值更改为整数值。在这个过程中,我学习了DROP COLUMN。但更糟糕的是,在处理这个问题时,Alembic让我的表处于中间状态,我正在编辑的表既有decimal列,也有integer列 但这个问题不是关于如何删除列。我知道我现在想怎么做。这个问题是关于如何将Alembic升级/降级脚本的所有DDL语句以及DLM内容打包到一个事务中,如果遇到故障,可以回滚该事务。我希望有一个安全

我一直在编写一个Alembic升级脚本,用于我的SQLAlchemy/SQLite数据库。该脚本的目的是将一列从十进制值更改为整数值。在这个过程中,我学习了
DROP COLUMN
。但更糟糕的是,在处理这个问题时,Alembic让我的表处于中间状态,我正在编辑的表既有decimal列,也有integer列

但这个问题不是关于如何删除列。我知道我现在想怎么做。这个问题是关于如何将Alembic升级/降级脚本的所有DDL语句以及DLM内容打包到一个事务中,如果遇到故障,可以回滚该事务。我希望有一个安全的模式可以推广到我所有的Alembic迁移

下面是我要查找的伪代码:

def upgrade():
    # get context or connection or something
    # on context/connection/migration context/something do something like
    with context.begin_transaction():

        # do various DDL stuff
        # with various new DDL stuff, do bulk inserts and data manipulation
        # once finally done, commit and end the transaction. roll EVERYTHING back if it fails.

我现在很困惑的是如何确定连接到数据库的正确方式。我是否执行类似于
alembic.op.get_bind()
的操作并处理那里的连接?我是否使用了
MigrationContext

您使用的是什么版本的Python@我用的是Alembic 0.9.8那是。。。不是我问的。如果运行
python-V
它会输出什么?(2.7.10?3.5.3?3.6.2?等)我不识字。在我使用的虚拟环境(pipenv)中运行该命令返回:
python3.6.4