Migrated issue, originally created by Maciek Olko ()
How to recreate:
from sqlalchemy import create_engine
from sqlalchemy import Table, Column, Integer, MetaData, JSON
engine = create_engine('postgresql://user:pass/jsontotext_test', echo=True)
metadata = MetaData()
Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('name', JSON),
)
metadata.create_all(engine)
Execute that. Then change script to:
from sqlalchemy import create_engine
from sqlalchemy import Table, Column, Integer, MetaData, Text
engine = create_engine('postgresql://user:pass/jsontotext_test', echo=True)
metadata = MetaData()
Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('name', Text),
)
metadata.create_all(engine)
Configure compare_type=True. Then run: alembic revision --autogenerate -m "JSON to Text test" on those MetaData and DB URL.
Effect:
"""json to text
Revision ID: 868a9e249d4d
Revises:
Create Date: 2017-09-15 12:29:55.222771
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '868a9e249d4d'
down_revision = None
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
pass
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
pass
# ### end Alembic commands ###
Expected:
"""json to text
Revision ID: 868a9e249d4d
Revises:
Create Date: 2017-09-15 12:29:55.222771
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '868a9e249d4d'
down_revision = None
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.alter_column('users', 'name', type_=sa.Text)
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.alter_column('users', 'name', type_=sa.JSON)
# ### end Alembic commands ###
该提问来源于开源项目:sqlalchemy/alembic