diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2005-10-22 21:44:37 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2005-10-22 21:44:37 +0000 |
| commit | fe12e56166ba6da0466fb36c2bf499005f2746d7 (patch) | |
| tree | 82f7e447e930112fbad4be29a3d3a412ea3b4aa6 /lib/sqlalchemy | |
| parent | a716f3b12b71b3506a08a226fd51fd199c54c2a1 (diff) | |
| download | sqlalchemy-fe12e56166ba6da0466fb36c2bf499005f2746d7.tar.gz | |
full mapper test suite works with postgres
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/engine.py | 8 | ||||
| -rw-r--r-- | lib/sqlalchemy/util.py | 16 |
2 files changed, 16 insertions, 8 deletions
diff --git a/lib/sqlalchemy/engine.py b/lib/sqlalchemy/engine.py index 085c20188..8be019ea5 100644 --- a/lib/sqlalchemy/engine.py +++ b/lib/sqlalchemy/engine.py @@ -58,7 +58,7 @@ class SQLEngine(schema.SchemaEngine): (cargs, cparams) = self.connect_args() self._pool = sqlalchemy.pool.manage(self.dbapi()).get_pool(*cargs, **cparams) self.echo = echo - self.context = util.ThreadLocal() + self.context = util.ThreadLocal(raiseerror=False) self.tables = {} self.notes = {} self.logger = sys.stdout @@ -168,6 +168,8 @@ class SQLEngine(schema.SchemaEngine): self.do_rollback(self.context.transaction) self.context.transaction = None self.context.tcount = None + else: + self.do_rollback(self.connection()) def commit(self): if self.context.transaction is not None: @@ -177,7 +179,9 @@ class SQLEngine(schema.SchemaEngine): self.do_commit(self.context.transaction) self.context.transaction = None self.context.tcount = None - + else: + self.do_commit(self.connection()) + def pre_exec(self, connection, cursor, statement, parameters, many = False, echo = None, **kwargs): pass diff --git a/lib/sqlalchemy/util.py b/lib/sqlalchemy/util.py index 07eb85846..2498316c1 100644 --- a/lib/sqlalchemy/util.py +++ b/lib/sqlalchemy/util.py @@ -101,15 +101,19 @@ class OrderedDict(dict): class ThreadLocal(object): """an object in which attribute access occurs only within the context of the current thread""" - def __init__(self): - object.__setattr__(self, 'tdict', {}) - def __getattribute__(self, key): + def __init__(self, raiseerror = True): + self.__dict__['_tdict'] = {} + self.__dict__['_raiseerror'] = raiseerror + def __getattr__(self, key): try: - return object.__getattribute__(self, 'tdict')["%d_%s" % (thread.get_ident(), key)] + return self._tdict["%d_%s" % (thread.get_ident(), key)] except KeyError: - raise AttributeError(key) + if self._raiseerror: + raise AttributeError(key) + else: + return None def __setattr__(self, key, value): - object.__getattribute__(self, 'tdict')["%d_%s" % (thread.get_ident(), key)] = value + self._tdict["%d_%s" % (thread.get_ident(), key)] = value class HashSet(object): """implements a Set.""" |
