On Tue, Nov 6, 2018 at 9:41 AM <yoch.me...@gmail.com> wrote:
>
> Hi,
>
> I'm using a schema with multiple DB, like :
>
> engine1 = create_engine("mysql://localhost/{db}?charset=utf8".format(db=db1))
> engine2 = create_engine("mysql://localhost/{db}?charset=utf8".format(db=db2))
>
> Then I use automap and reflection to generate mapping of all classes needed.
>
> Sometime, I want to use classes from both databases, but I cannot bind my 
> session directly with two engines.
>
> I noticed that I can use the Session `binds` argument to decide which class 
> to bind to some engine, but I have many classes to include here, and this is 
> somewhat error prone.
>
> Is there any solution to automate the binding definition against each class ? 
> Or to bind a session directly to multiple engines ?

you would use the "binds" argument as you saw in
https://docs.sqlalchemy.org/en/latest/orm/session_api.html#sqlalchemy.orm.session.Session.params.binds.

as you noticed though, you have to tell the Session which classes map
to which engine.   So when you use automap, each time you reflect()
for a particular engine, you need to gather all the classes that were
generated for that call and add them to a dictionary, which you can
then pass to session.binds.

If you have some totally other way to tell the Session, given a class,
which engine to use, you can also make your own method to do whatever
you want and override it, by overriding get_bind:
https://docs.sqlalchemy.org/en/latest/orm/session_api.html#sqlalchemy.orm.session.Session.get_bind
.    you probably don't need to do it this way but there's an example
of how that looks at
http://techspot.zzzeek.org/2012/01/11/django-style-database-routers-in-sqlalchemy/.



>
> Thank you
>
>
> --
> SQLAlchemy -
> The Python SQL Toolkit and Object Relational Mapper
>
> http://www.sqlalchemy.org/
>
> To post example code, please provide an MCVE: Minimal, Complete, and 
> Verifiable Example. See http://stackoverflow.com/help/mcve for a full 
> description.
> ---
> 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 https://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
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 https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to