I thought about wrapping create_all this way:
def create_tables(database, schema=None):
for table in Base.metadata.tables.values():
table.schema = schema
Base.metadata.create_all(database.engine)
and then probably use the event for all the queries afterwards. Is this too
much of a nasty way of doing it?
On Thursday, March 12, 2015 at 6:29:00 PM UTC+1, Michael Bayer wrote:
Francesco Della Vedova francesco@rocket-internet.de javascript:
wrote:
Hello,
I have a set of models that I would like to replicate on different
Postgres schemas. The name of the schema is only known at runtime.
Just as an example, imagine I have a bunch of tables of customer data,
and I want to create a schema 'customer_id' with the same tables every time
I get a new customer.
I'm aware of this strategy but it wouldn't work in my case.
class TableA(Base):
...
class TableB(Base):
...
for customer_id in customers:
# set the schema here
Base.metadata.create_all()
you can try using table.tometadata(new_metadata, schema=my schema) to
make
new tables, and possibly even use it in conjunction with automap
(http://docs.sqlalchemy.org/en/rel_0_9/orm/extensions/automap.html).
Another approach is to use a before_cursor_execute() event, searching for
a
schema token in the SQL and rewriting it to one that is set up on the
current connection in the .info dictionary.
The latter is essentially a hacky way to get at an upcoming feature which
is
https://bitbucket.org/zzzeek/sqlalchemy/issue/2685/default-schema-schema-translation-map-as.
This depends of course on if you need to use each schema on a
per-Session/connection basis, or you need to work with all schema-based
models simultaneously.
--
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.