All pastes #151994 Raw Edit

dialtone, _transact

public python v1 · immutable
#151994 ·published 2006-08-28 13:58 UTC
rendered paste body
from twisted.internet import reactor, defer, threadsimport sqlalchemy as safrom exceptions import Exceptiondef _transact(engine):    def _transaction(f):        def _wrap(*args, **kwargs):            def _1():                conn = meta.engine.contextual_connect()                trans = conn.begin()                try:                    r = f(*args, **kwargs)                except Exception, e:                    print e                    trans.rollback()                    conn.close()                    raise                else:                    trans.commit()                    conn.close()                    return r            return threads.deferToThread(_1)        _wrap.__name__ = f.__name__        return _wrap    return _transactionreactor.suggestThreadPoolSize(10)meta = sa.DynamicMetaData(threadlocal = False)users = sa.table('users',        sa.Column('id', sa.Integer, primary_key = True),        sa.Column('firstname', sa.String(128)),        sa.Column('lastname', sa.String(128)),        sa.Column('nickname', sa.String(128)),        sa.Column('email', sa.String(255)),    )transact = _transact(meta)sq = sa.create_engine("sqlite://./test.db")meta.connect(sq)@transactdef aa():    users.insert().execute(firstname = "test",                          lastname = "test",                          nickname = "test",                          email = "blah")reactor.callLater(0.0, aa)reactor.run()Traceback :Traceback (most recent call last):  File "/usr/lib/python2.4/threading.py", line 422, in run    self.__target(*self.__args, **self.__kwargs)  File "/usr/lib/python2.4/site-packages/twisted/python/threadpool.py", line 148, in _worker    context.call(ctx, function, *args, **kwargs)  File "/usr/lib/python2.4/site-packages/twisted/python/context.py", line 59, in callWithContext    return self.currentContext().callWithContext(ctx, func, *args, **kw)  File "/usr/lib/python2.4/site-packages/twisted/python/context.py", line 37, in callWithContext    return func(*args,**kw)--- <exception caught here> ---  File "/usr/lib/python2.4/site-packages/twisted/internet/threads.py", line 25, in _putResultInDeferred    result = f(*args, **kwargs)  File "test.py", line 15, in _1    r = f(*args, **kwargs)  File "test.py", line 53, in aa    email = "blah")  File "/usr/lib/python2.4/site-packages/sqlalchemy/sql.py", line 509, in execute    return self.execute_using(self.engine, *multiparams, **params)  File "/usr/lib/python2.4/site-packages/sqlalchemy/sql.py", line 463, in execute_using    return self.compile(engine=engine, parameters=compile_params).execute(*multiparams, **params)  File "/usr/lib/python2.4/site-packages/sqlalchemy/sql.py", line 374, in execute    raise exceptions.InvalidRequestError("This Compiled object is not bound to any engine.")sqlalchemy.exceptions.InvalidRequestError: This Compiled object is not bound to any engine.