diff options
| author | iElectric <unknown> | 2009-07-08 22:03:00 +0200 |
|---|---|---|
| committer | iElectric <unknown> | 2009-07-08 22:03:00 +0200 |
| commit | 67af81806d96f4071d2ac6bc0d956b4e2e8879dc (patch) | |
| tree | 5e566be9a24cbece0cfa6a0c52a03d6d01e7cede /migrate/versioning/script | |
| parent | 286a912e34823483ae0fd767721fb5221d7b7ea1 (diff) | |
| download | sqlalchemy-migrate-67af81806d96f4071d2ac6bc0d956b4e2e8879dc.tar.gz | |
add tests for plain API, fixed some small bugs
Diffstat (limited to 'migrate/versioning/script')
| -rw-r--r-- | migrate/versioning/script/py.py | 21 | ||||
| -rw-r--r-- | migrate/versioning/script/sql.py | 12 |
2 files changed, 20 insertions, 13 deletions
diff --git a/migrate/versioning/script/py.py b/migrate/versioning/script/py.py index 15f68b0..3eaec29 100644 --- a/migrate/versioning/script/py.py +++ b/migrate/versioning/script/py.py @@ -1,6 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +import warnings import shutil from StringIO import StringIO @@ -11,6 +12,7 @@ from migrate.versioning.template import template from migrate.versioning.script import base from migrate.versioning.util import import_path, load_model, construct_engine +__all__ = ['PythonScript'] class PythonScript(base.BaseScript): """Base for Python scripts""" @@ -88,16 +90,11 @@ class PythonScript(base.BaseScript): :param path: Script location :type path: string - :raises: :exc:`InvalidScriptError <migrate.versioning.exceptions.InvalidScriptError>` :returns: Python module """ # Try to import and get the upgrade() func - try: - module = import_path(path) - except: - # If the script itself has errors, that's not our problem - raise + module = import_path(path) try: assert callable(module.upgrade) except Exception, e: @@ -134,13 +131,15 @@ class PythonScript(base.BaseScript): op = 'downgrade' else: raise exceptions.ScriptError("%d is not a valid step" % step) + funcname = base.operations[op] - - func = self._func(funcname) + script_func = self._func(funcname) + try: - func(engine) + script_func(engine) except TypeError: - print "upgrade/downgrade functions must accept engine parameter (since ver 0.5.5)" + warnings.warn("upgrade/downgrade functions must accept engine" + " parameter (since version > 0.5.4)") raise @property @@ -148,7 +147,7 @@ class PythonScript(base.BaseScript): """Calls :meth:`migrate.versioning.script.py.verify_module` and returns it. """ - if not hasattr(self, '_module'): + if not getattr(self, '_module', None): self._module = self.verify_module(self.path) return self._module diff --git a/migrate/versioning/script/sql.py b/migrate/versioning/script/sql.py index 851fdf2..97dc505 100644 --- a/migrate/versioning/script/sql.py +++ b/migrate/versioning/script/sql.py @@ -7,8 +7,16 @@ from migrate.versioning.script import base class SqlScript(base.BaseScript): """A file containing plain SQL statements.""" + @classmethod + def create(cls, path, **opts): + """Create an empty migration script at specified path + + :returns: :class:`SqlScript instance <migrate.versioning.script.sql.SqlScript>`""" + cls.require_notfound(path) + open(path, "w").close() + # TODO: why is step parameter even here? - def run(self, engine, step=None): + def run(self, engine, step=None, executemany=True): """Runs SQL script through raw dbapi execute call""" text = self.source() # Don't rely on SA's autocommit here @@ -21,7 +29,7 @@ class SqlScript(base.BaseScript): # HACK: SQLite doesn't allow multiple statements through # its execute() method, but it provides executescript() instead dbapi = conn.engine.raw_connection() - if getattr(dbapi, 'executescript', None): + if executemany and getattr(dbapi, 'executescript', None): dbapi.executescript(text) else: conn.execute(text) |
