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
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
"""
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(
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()
USE_TWOPHASE = False
from alembic import context
-from sqlalchemy import engine_from_config
+from sqlalchemy import engine_from_config, pool
import re
import sys
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
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']
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()
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()