On Aug 17, 2011, at 1:06 PM, Tim Black wrote:

> On 08/17/2011 11:16 AM, Michael Bayer wrote:
>> 
>> Great, and to answer your TODO no, metadata.bind = engine is not necessary 
>> and I try to discourage people from using that activity by default (but the 
>> plethora of Turbogears and Pylons tutorials that keep using it makes this 
>> task more or less impossible).    A discussion of that feature specifically 
>> is at 
>> http://www.sqlalchemy.org/docs/core/schema.html#binding-metadata-to-an-engine-or-connection
>>  .
> I read that, and because the docs indicate removing metadata.bind = engine1 
> would make me lose "implicit" execution (unless it's provided by some other 
> means in TurboGears' config), I worried that might break TurboGears' 
> transaction management or query execution configuration somehow--is that 
> possible?  I only ask because TurboGears' creators may have some question 
> like this in mind--maybe you can see better than I whether this indicates a 
> way the docs can be improved.  After reading more of the SQLAlchemy docs, it 
> appears to me the answer to that question is "No," because "implicit" 
> execution and transaction management are two very different and unrelated 
> things in SQLAlchemy, and that whatever "implicit" execution TurboGears may 
> need is probably provided by binding the engine to the session.  And, so far, 
> my code works without the metadata.bind = engine1 statement.
> 
> I'll mention one more thing where maybe the docs should be improved--when I 
> created the lines below, I had to read through SQLAlchemy's code to try to 
> figure out whether I could use both bind (singular) and binds (plural) 
> simultaneously on the same object.  Initially the docs made me feel 
> uncomfortable using both bind and binds; it seemed like if bind stores one 
> connectable in the session, binds might replace that one connectable with a 
> list of connectables, so maybe I could only use one and not both (bind and 
> binds).  But, through trial and error (which docs need never attempt to 
> completely replace), using both works!
> 
>     DBSession.configure(bind=engine1)
> -    DBSession2.configure(bind=engine2)
> +    DBSession.configure(binds={Ticket:engine2})
> 
> But here is how the docs could be made more clear - simply state 1. whether 
> it is allowable to use bind and binds simultaneously on the same object, and 
> (if 2. is the case) 2. that the engine specified in bind will be used for all 
> classes, mappers, and tables except where another engine is specified by 
> binds.  For brevity's sake, I note that 1. is implicit in 2.

well the docs so far are in 
http://www.sqlalchemy.org/docs/orm/session.html#sqlalchemy.orm.session.Session.get_bind
 and basically it will try to return the most specific "bind" first.   ie.....I 
was about to start typing the order here.   What's the use in that, when I can 
type it into the docs instead, so click over there to see the exact order of 
resolution.




-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to