On 8/10/15 4:14 PM, Luis Guzman wrote:
Right, this is possible.

In my newbie status I did not know you can post-bind the metadata to a different engine.

A_metadata.bind = B_engine

And then:

A_metadata.create_all() does the magic.

please just pass the Engine object to create_all() directly and don't confuse things by modifying the MetaData object in place:

metadata.create_all(any_engine)







On Friday, August 7, 2015 at 4:43:07 PM UTC-7, Luis Guzman wrote:

    Hi,

    Is it possible to reflect from one engine and then use some of the
    tables reflected as base to create tables in a second, different
    engine?

    A possible way:

    A_engine = create_engine("postgresql+psycopg2://...A...)
    B_engine = create_engine("postgresql+psycopg2://...B...)

    A_metadata = MetaData(schema='A', bind=A_engine)
    B_metadata = MetaData(schema='B', bind=B_engine)

    A_metadata.reflect(bind=A_engine)
    A_table = A_metadata.tables['A_table']

    A_table.metadata = B_metadata
    A_table.schema = 'B'

    But now, I'm not sure how to tell A_metadata that it has a A_table
    to care for.

    I've tried also with similar success using the 'autoload' and with
    the 'automap_base',  instead of reflect.

    Any ideas? is this too hacky/crazy/stupid? If not, it is a better
    way I haven't found?

    The use case is that I'd like to reflect what are the tables from
    production database, and use them as 'templates' to create a new
    database for testing.
    That is, I want to be able to create in my test database with the
    actual reflection of what it is in production, and use SQLAlchemy
    to control the creation of fake data in it.

    Thanks in advance!

    Luis


--
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 [email protected] <mailto:[email protected]>. To post to this group, send email to [email protected] <mailto:[email protected]>.
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to