Given an Alembic migration, would you recommend the following code to
rename constraints?
from alembic import op
import sqlalchemy as sa
from srv.orm.meta import NAMING_CONVENTION # as per Pylons cookiecutter
template
def upgrade():
connection = op.get_bind()
engine = connection.engine
metadata = sa.MetaData(naming_convention=NAMING_CONVENTION)
for table_name in engine.table_names():
table = sa.Table(table_name, metadata, autoload_with=connection)
for fk in table.foreign_keys:
op.drop_constraint(fk.name, table_name, type_="foreignkey")
fk.name = None
op.invoke(CreateForeignKeyOp.from_constraint(fk))
For downgrade() we'd create a metadata without naming_convention, thus
falling back to the db's naming (which is where we're coming from).
However, how would I go about iterating over indexes, unique constraints,
and check constraints of a table?
Thank you!
On Wednesday, August 30, 2017 at 7:20:32 AM UTC+10, [email protected]
wrote:
>
> Thank you, Mike!
>
> I’ll take a closer look at your proposed code this week.
>
> I am curious though: not even MySQL has a rename feature
> <https://stackoverflow.com/questions/6188011/how-do-i-rename-a-foreign-key-in-mysql#13782962>,
>
> is that because of consistency? PostgreSQL adds ALTER TABLE … RENAME
> CONSTRAINT
> <https://www.postgresql.org/docs/9.2/static/sql-altertable.html> with 9.2
> though. (Boy, I keep running into issues that keep pushing me towards
> Porstgres.)
>
> Jens
>
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy-alembic" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.