예제 #1
0
    def run(self, engine, step):
        """Core method of Script file.
        Exectues :func:`update` or :func:`downgrade` functions

        :param engine: SQLAlchemy Engine
        :param step: Operation to run
        :type engine: string
        :type step: int
        """
        if step in ('downgrade', 'upgrade'):
            op = step
        elif step > 0:
            op = 'upgrade'
        elif step < 0:
            op = 'downgrade'
        else:
            raise ScriptError("%d is not a valid step" % step)

        funcname = base.operations[op]
        script_func = self._func(funcname)

        # check for old way of using engine
        if not inspect.getargspec(script_func)[0]:
            raise TypeError("upgrade/downgrade functions must accept engine"
                            " parameter (since version 0.5.4)")

        script_func(engine)
예제 #2
0
 def _func(self, funcname):
     if not hasattr(self.module, funcname):
         msg = "Function '%s' is not defined in this script"
         raise ScriptError(msg % funcname)
     return getattr(self.module, funcname)