there are many on this list who dont think very highly of global
variables ! :)
id advise using your own create_engine function to keep track of
created engines before calling SA's create_engine strategy, and/or
monkeypatch sqlalchemy.create_engine to do so:
atexit_engines = []
def atexit():
[e.dispose() for e in atexit_engines]
import sqlalchemy as sa
_old_create_engine = sa.create_engine
def create_engine(*args, **kwargs):
engine = _old_create_engine(*args, **kwargs)
atexit_engines.append(engine)
return engine
sa.create_engine = create_engine
or, if you want to get more OO about it you can make your own
EngineStrategy to do it:
import sqlalchemy.engine.strategies as strategies
atexit_engines = []
class CleanupStrategy(strategies.ThreadLocalEngineStrategy):
def __init__(self):
EngineStrategy.__init__(self, 'atexit_cleanup')
def create(self, *args, **kwargs):
engine = super(CleanupStrategy, self).create(*args,
**kwargs)
atexit_engines.append(engine)
return engine
CleanupStrategy()
engine = create_engine('someengine', strategy='atexit_cleanup')
On Jul 23, 2006, at 10:14 PM, Mike Bernson wrote:
> I am using threadlocal.
>
> Is there any global name that I can call in atexit function. The
> atexit
> function is registered before any database stuff is accessed. The
> engine
> create is ' engine = create_engine(connect_string,
> strategy='threadlocal')'. In the atexit function I just
> want to
> close out any active because the port will not be there. There are a
> number of engine. One is created for each database that I need to
> access.
>
> Michael Bayer wrote:
>> maybe engine.dispose() to explicitly close off everything first
>>
>>
>> On Jul 23, 2006, at 6:15 PM, Mike Bernson wrote:
>>
>>> I am using ssh to port forward the connection to the database.
>>>
>>> I have some code that execute before any sqlalchemy that sets up a
>>> port forward from local host to mysql database host. In this
>>> function
>>> I do atexit to kill off the ssh that has the port forward.
>>>
>>> I get a the following error when the program exits:
>>> Exception _mysql_exceptions.OperationalError: (2006, 'MySQL
>>> server has
>>> gone away') in <bound method ConnectionFairy.__del__ of
>>> <sqlalchemy.pool.ConnectionFairy object at 0x2aaaad4c8d90>> ignored
>>>
>>> Is there something that I can put in the atexit function clear up
>>> this
>>> error ?
>>>
>>> Is there something I can put as the last statements to be executed
>>> that
>>> would clean up this error (for normal execution path)
>>>
>>> The atexit is done so that no matter how the program exits the
>>> ssh is
>>> killed off.
>>>
>>> --------------------------------------------------------------------
>>> --
>>> ---
>>> Take Surveys. Earn Cash. Influence the Future of IT
>>> Join SourceForge.net's Techsay panel and you'll get the chance to
>>> share your
>>> opinions on IT & business topics through brief surveys -- and earn
>>> cash
>>> http://www.techsay.com/default.php?
>>> page=join.php&p=sourceforge&CID=DEVDEV
>>> _______________________________________________
>>> Sqlalchemy-users mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users
>>
>>
>> ---------------------------------------------------------------------
>> ----
>> Take Surveys. Earn Cash. Influence the Future of IT
>> Join SourceForge.net's Techsay panel and you'll get the chance to
>> share your
>> opinions on IT & business topics through brief surveys -- and earn
>> cash
>> http://www.techsay.com/default.php?
>> page=join.php&p=sourceforge&CID=DEVDEV
>> _______________________________________________
>> Sqlalchemy-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users
>
> ----------------------------------------------------------------------
> ---
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to
> share your
> opinions on IT & business topics through brief surveys -- and earn
> cash
> http://www.techsay.com/default.php?
> page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Sqlalchemy-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Sqlalchemy-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users