]> git.ipfire.org Git - thirdparty/sqlalchemy/alembic.git/commitdiff
- [bug] env.py templates call
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 26 Jan 2012 15:21:25 +0000 (10:21 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 26 Jan 2012 15:21:25 +0000 (10:21 -0500)
  connection.close() to better support
  programmatic usage of commands; use
  NullPool in conjunction with create_engine()
  as well so that no connection resources
  remain afterwards.  [#25]

CHANGES
alembic/templates/generic/env.py
alembic/templates/multidb/env.py
alembic/templates/pylons/env.py

diff --git a/CHANGES b/CHANGES
index 15b36d112f1a83fe272dff4ab447de6f4fcbce31..d48b34d53796b81c48efb2774e971b5dd00ced76 100644 (file)
--- a/CHANGES
+++ b/CHANGES
   the newer script.py.mako scripts.
   [#24]
 
+- [bug] env.py templates call 
+  connection.close() to better support 
+  programmatic usage of commands; use
+  NullPool in conjunction with create_engine()
+  as well so that no connection resources
+  remain afterwards.  [#25]
+
 0.1.2
 =====
 - [bug] fix the config.main() function to honor
index 73ce40377e3be6d793ea65555a11dc327eba5576..755bf4f524124a3ff119f3434bc92b10896854d5 100644 (file)
@@ -1,6 +1,6 @@
 from __future__ import with_statement
 from alembic import context
-from sqlalchemy import engine_from_config
+from sqlalchemy import engine_from_config, pool
 from logging.config import fileConfig
 
 # this is the Alembic Config object, which provides
@@ -48,7 +48,9 @@ def run_migrations_online():
     
     """
     engine = engine_from_config(
-                config.get_section(config.config_ini_section), prefix='sqlalchemy.')
+                config.get_section(config.config_ini_section), 
+                prefix='sqlalchemy.', 
+                poolclass=pool.NullPool)
 
     connection = engine.connect()
     context.configure(
@@ -56,8 +58,11 @@ def run_migrations_online():
                 target_metadata=target_metadata
                 )
 
-    with context.begin_transaction():
-        context.run_migrations()
+    try:
+        with context.begin_transaction():
+            context.run_migrations()
+    finally:
+        connection.close()
 
 if context.is_offline_mode():
     run_migrations_offline()
index 4df6ae3666baa1d1619c62419e66b34b1d0fb3a8..881229482e73e1f366291b2bb10cbf4f4e4346f4 100644 (file)
@@ -1,7 +1,7 @@
 USE_TWOPHASE = False
 
 from alembic import context
-from sqlalchemy import engine_from_config
+from sqlalchemy import engine_from_config, pool
 import re
 import sys
 
@@ -44,7 +44,8 @@ def run_migrations_offline():
     engines = {}
     for name in re.split(r',\s*', db_names):
         engines[name] = rec = {}
-        rec['url'] = context.config.get_section_option(name, "sqlalchemy.url")
+        rec['url'] = context.config.get_section_option(name, 
+                                            "sqlalchemy.url")
 
     for name, rec in engines.items():
         file_ = "%s.sql" % name
@@ -70,8 +71,10 @@ def run_migrations_online():
     engines = {}
     for name in re.split(r',\s*', db_names):
         engines[name] = rec = {}
-        rec['engine'] = engine_from_config(context.config.get_section(name),
-                                    prefix='sqlalchemy.')
+        rec['engine'] = engine_from_config(
+                                    context.config.get_section(name),
+                                    prefix='sqlalchemy.',
+                                    poolclass=pool.NullPool)
 
     for name, rec in engines.items():
         engine = rec['engine']
@@ -103,6 +106,10 @@ def run_migrations_online():
         for rec in engines.values():
             rec['transaction'].rollback()
         raise
+    finally:
+        for rec in engines.values():
+            rec['connection'].close()
+
 
 if context.is_offline_mode():
     run_migrations_offline()
index 25832bfaac2b9054e5ef9ac5dd4b2f5ef3c026c8..ba8809f941b23e331514bc26bfd4c17ef183d20f 100644 (file)
@@ -59,8 +59,11 @@ def run_migrations_online():
                 target_metadata=target_metadata
                 )
 
-    with context.begin_transaction():
-        context.run_migrations()
+    try:
+        with context.begin_transaction():
+            context.run_migrations()
+    finally:
+        connection.close()
 
 if context.is_offline_mode():
     run_migrations_offline()