On 02/05/2016 12:46 PM, Jonathan Beluch wrote:
Hi, I have an existing pg database where I'd like to get the names in
order according to a new naming_convention. However, dropping and
recreating lots of indexes is obviously a bad idea.

I've coded RenameConstraintOp and RenameIndexOp along with the dispatch
functions. I'm trying to figure out the best way to hook into
autogenerate to output a rename instead of a create/drop.

Potential solutions?

  * Rewriter doesn't seem like a good fit because it only takes in a
    single operation and I want to remove two ops and add a different op.

the rewriter object, and more generally rewriting existing autogenerations, is likely the best way to do this. you can do rewriter for both addconstraint and dropconstraint, and have the rewriter for dropconstraint just return an empty list. two rewriters can coordinate using the context given. Or, write your own traversal scheme for process_revision_directives.




  * comparison function doesn't seem right either because it only adds
    new operations, it doesn't override existing behavior

the existing comparison functions should be overridable, actually but you'll still want to use most of them so you might have to tinker with how things work a bit.


  * traverse the entire migration structure pairwise and compare and
    remove add/drop and insert rename

similar to rewriter, but you don't have to bend rewriter to work across two different operations.

  * fork and modify the alembic source
    
https://github.com/zzzeek/alembic/blob/master/alembic/autogenerate/compare.py#L526
    for this one off migration

should not be necessary.



I'm leaning towards 4, since this will be a one time migration (now that
the naming_convention is in place). Please correct my understandings
above if I'm wrong. Thanks!

--
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 sqlalchemy-alembic+unsubscr...@googlegroups.com
<mailto:sqlalchemy-alembic+unsubscr...@googlegroups.com>.
For more options, visit https://groups.google.com/d/optout.

--
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 sqlalchemy-alembic+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to