From: Mike Bayer Date: Mon, 16 Jul 2007 21:22:17 +0000 (+0000) Subject: fix to connection-bound compiled objects X-Git-Tag: rel_0_4_6~102 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a1f274c72f052c3f905b18753403bb3d1d6559eb;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git fix to connection-bound compiled objects --- diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py index 008d90b0e7..8329fbaec9 100644 --- a/lib/sqlalchemy/engine/base.py +++ b/lib/sqlalchemy/engine/base.py @@ -688,7 +688,7 @@ class Connection(Connectable): return self.execute(object, *multiparams, **params).scalar() def compiler(self, statement, parameters, **kwargs): - return self.dialect.compiler(statement, parameters, bind=self.engine, **kwargs) + return self.dialect.compiler(statement, parameters, bind=self, **kwargs) def execute(self, object, *multiparams, **params): for c in type(object).__mro__: diff --git a/test/engine/bind.py b/test/engine/bind.py index b928d3dd86..4bdf26499c 100644 --- a/test/engine/bind.py +++ b/test/engine/bind.py @@ -98,6 +98,26 @@ class BindTest(testbase.PersistTest): table.drop() assert not table.exists() + def test_implicit_execution(self): + metadata = MetaData() + table = Table('test_table', metadata, + Column('foo', Integer)) + conn = testbase.db.connect() + metadata.create_all(bind=conn) + try: + trans = conn.begin() + metadata.bind = conn + t = table.insert() + assert t.bind is conn + table.insert().execute(foo=5) + table.insert().execute(foo=6) + table.insert().execute(foo=7) + trans.rollback() + metadata.bind = None + assert testbase.db.execute("select count(1) from test_table").scalar() == 0 + finally: + metadata.drop_all(bind=conn) + def test_clauseelement(self): metadata = MetaData()