Thanks for the reply. I had implemented this feature about two months ago, and I had forgotten myself. I had originally used this:
def rand_hex_str(): return '%016x' % random.getrandbits(64) # using event listener to force foreign key definitions to use 'alter statements' def fk_constraint_name(const, table): fk_name = 'fk_' + rand_hex_str() # generates a foreign key constraint like: fk_ABC0234DEF const.name = fk_name const.use_alter = True # generate alter statements. event.listen(ForeignKeyConstraint, "before_parent_attach", fk_constraint_name) Later, I replaced the sqlalchemy.ForiegnKey class with this wrapper function before the model definitions start using foreign key relationships: orig_fkey_class = sqlalchemy.ForeignKey def use_alter_fkey_func(*args, **kwargs): if 'name' not in kwargs: kwargs['name'] = 'fk_' + rand_hex_str() if 'use_alter' not in kwargs: kwargs['use_alter'] = True return orig_fkey_class(*args, **kwargs) sqlalchemy.ForeignKey = use_alter_fkey_func Is there a drawback to replacing the sqlAlchemy ForeignKey class with this wrapper function instead of using an event? On Wednesday, August 27, 2014 5:20:35 AM UTC-7, Michael Bayer wrote: > > you can alter how MetaData things are built up using the > after_parent_attach event: > > > http://docs.sqlalchemy.org/en/rel_0_9/core/events.html?highlight=after_parent_attach#sqlalchemy.events.DDLEvents.after_parent_attach > > > apply the event to ForeignKey and set use_alter=True for all of them as > they come in. > > > On Aug 26, 2014, at 10:03 PM, Bala Ramakrishnan <bal...@gmail.com > <javascript:>> wrote: > > To generate an 'alter table ' statement for foreign key constraints, we > have to specify use_alter=True for the ForeignKey class. > > Is there a global setting or via setting up some kind of event call back > to generate the alter statements by default for all foreign key constraints > instead of setting them for each relationship? > > I am trying to find a comparable setting with Java Hibernate. > > -Bala > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sqlalchemy+...@googlegroups.com <javascript:>. > To post to this group, send email to sqlal...@googlegroups.com > <javascript:>. > Visit this group at http://groups.google.com/group/sqlalchemy. > For more options, visit https://groups.google.com/d/optout. > > > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.