Mike, Thanks a lot for the response it really helped. I look forward to 1.0 and having everything work automatically.
On Thursday, January 1, 2015 10:34:43 PM UTC-6, Michael Bayer wrote: > > > > Michael Bayer <mik...@zzzcomputing.com <javascript:>> wrote: > > > best way is probably to add it on after the fact. this is the flag but > also > > because the flag isn’t set up front, seems to need the add/drop > directives > > to be applied as in > > > http://docs.sqlalchemy.org/en/rel_0_9/core/ddl.html#controlling-ddl-sequences: > > > > I wasn’t really happy with this system given the use case here, so for 1.0 > I’ve made it such that the use_alter flag is pretty much no longer needed > at > least when working with metadata.create_all / drop_all, unless specific > sequences are desired. Cycles between tables are now resolved by breaking > out those specific foreign key constraints when the create is done: > > > http://docs.sqlalchemy.org/en/latest/changelog/migration_10.html#feature-3282 > > Also the use_alter flag in 1.0 if you were to set it after the fact would > be > understood as is without needing to set up those events. > > > > > from sqlalchemy.schema import AddConstraint, DropConstraint > > from sqlalchemy import event > > > > for table in Base.metadata.tables.values(): > > > > for fkc in table.foreign_keys: > > fkc.use_alter = True > > > > # if not named, then add a name, though yours are reflected so > this is already there > > fkc.constraint.name = “fk_%s” % table.name # need a better > naming scheme here likely > > > > event.listen(Base.metadata, "after_create", > AddConstraint(fkc.constraint)) > > event.listen(Base.metadata, "before_drop", > DropConstraint(fkc.constraint)) > > > > > > > > > > > > Mike Arbelaez <mike.a...@gmail.com <javascript:>> wrote: > > > >> I'm currently reflecting a few tables from a MSSQL database and then > creating the table structure over to Postgres. I'm using sqlalchemy 0.9 and > python 2.7. > >> > >> So far I've been very successful doing this with most of the tables > except on a few tables I've received a > 'sqlalchemy.exc.CircularDependencyError: Circular dependency detected.' > >> > >> I've done some research and it looks like I'll need to do a > 'use_alter=True', however, I'm not defining any or foreign keys those are > being picked up by the reflection process. > >> > >> How would I add this parameter to my 'create_all()' statement. I've > included the basic logic below. > >> > >> > >> def make_session(connection_string): > >> engine = create_engine(connection_string, echo=True, > convert_unicode=True) > >> Session = sessionmaker(bind=engine) > >> return Session(), engine > >> > >> > >> sengine = 'mssql+pyodbc://User:Password@sourcedb' > >> dengine = 'mssql+pyodbc://User:Password@destinationdb' > >> > >> source, engine = make_session(sengine) > >> smeta = MetaData(bind=sengine) > >> > >> destination, dengine = make_session(dengine) > >> > >> table_name = 'SomeTable' > >> > >> #Load the table > >> table = Table(table_name, smeta, autoload=True) > >> > >> #Create table at new destination > >> table.metadata.create_all(dengine) > >> > >> > >> > >> > >> > >> -- > >> 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+...@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.