相关疑难解决方法(0)

Alembic:使用USING改变列类型

我正在尝试使用alembic将SQLAlchemy PostgreSQL ARRAY(文本)字段转换为我的一个表列的BIT(vary = True)字段.

该列目前定义为:

cols = Column(ARRAY(TEXT), nullable=False, index=True)
Run Code Online (Sandbox Code Playgroud)

我想将其更改为:

cols = Column(BIT(varying=True), nullable=False, index=True)
Run Code Online (Sandbox Code Playgroud)

默认情况下似乎不支持更改列类型,因此我手动编辑了alembic脚本.这就是我目前所拥有的:

def upgrade():
    op.alter_column(
        table_name='views',
        column_name='cols',
        nullable=False,
        type_=postgresql.BIT(varying=True)
    )


def downgrade():
    op.alter_column(
        table_name='views',
        column_name='cols',
        nullable=False,
        type_=postgresql.ARRAY(sa.Text())
    )
Run Code Online (Sandbox Code Playgroud)

但是,运行此脚本会出现错误:

Traceback (most recent call last):
  File "/home/home/.virtualenvs/deus_lex/bin/alembic", line 9, in <module>
    load_entry_point('alembic==0.7.4', 'console_scripts', 'alembic')()
  File "/home/home/.virtualenvs/deus_lex/local/lib/python2.7/site-packages/alembic/config.py", line 399, in main
    CommandLine(prog=prog).main(argv=argv)
  File "/home/home/.virtualenvs/deus_lex/local/lib/python2.7/site-packages/alembic/config.py", line 393, in main
    self.run_cmd(cfg, options)
  File "/home/home/.virtualenvs/deus_lex/local/lib/python2.7/site-packages/alembic/config.py", line 376, in run_cmd
    **dict((k, getattr(options, k)) for k in kwarg)
  File "/home/home/.virtualenvs/deus_lex/local/lib/python2.7/site-packages/alembic/command.py", line …
Run Code Online (Sandbox Code Playgroud)

postgresql sqlalchemy alembic

31
推荐指数
2
解决办法
1万
查看次数

标签 统计

alembic ×1

postgresql ×1

sqlalchemy ×1