]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
fix to connection-bound compiled objects
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 16 Jul 2007 21:22:17 +0000 (21:22 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 16 Jul 2007 21:22:17 +0000 (21:22 +0000)
lib/sqlalchemy/engine/base.py
test/engine/bind.py

index 008d90b0e7c9587291495e70d4d1729dac4fb097..8329fbaec9c7a825a5ac3474e77a69973f56b2d9 100644 (file)
@@ -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__:
index b928d3dd8646dc3292587193f9995e48a30193ca..4bdf26499cc132db9c6d95398896f955f2652e32 100644 (file)
@@ -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()