Oh, I see. I was unaware that lambda evaluated the result only once,
not each use. Thanks so much for your help.

On Dec 19, 4:36 pm, Michael Bayer <mike...@zzzcomputing.com> wrote:
> def setup(**kwargs):
>      connection = MySQLdb.connections.Connection(**kwargs)
>      engine = create_engine('mysql://', creator=lambda: connection,  
> pool_recycle=2)
>
> the "creator" argument is a callable that returns a new connection  
> when the pool needs one.  Above, you are pre-connecting a single MySQL  
> connection and returning it from the lambda.  Besides producing non-
> mutexed multithreaded access to the single Connection itself (which  
> may or may not be OK for MySQLdb), it also prevents a new connection  
> from being created once it has been recycled.  The previous  
> connection, now closed, is all that's available.
>
> The correct form is:
>
> def setup(**kwargs):
>      def connect():
>          return MySQLdb.connections.Connection(**kwargs)
>      engine = create_engine('mysql://', creator=lambda: connect,  
> pool_recycle=2)
>

--~--~---------~--~----~------------~-------~--~----~
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