'Create a DDL statement.
:param statement:
A string or unicode string to be executed.  Statements will be
processed with Python\'s string formatting operator.  See the
``context`` argument and the ``execute_at`` method.
A literal \'%\' in a statement must be escaped as \'%%\'.
SQL bind parameters are not available in DDL statements.
:param on:
.. deprecated:: 0.7
See :meth:`.DDLElement.execute_if`.
Optional filtering criteria.  May be a string, tuple or a callable
predicate.  If a string, it will be compared to the name of the
executing database dialect::
DDL(\'something\', on=\'postgresql\')
If a tuple, specifies multiple dialect names::
DDL(\'something\', on=(\'postgresql\', \'mysql\'))
If a callable, it will be invoked with four positional arguments
as well as optional keyword arguments:
:ddl:
This DDL element.
:event:
The name of the event that has triggered this DDL, such as
\'after-create\' Will be None if the DDL is executed explicitly.
:target:
The ``Table`` or ``MetaData`` object which is the target of
this event. May be None if the DDL is executed explicitly.
:connection:
The ``Connection`` being used for DDL execution
:tables:
Optional keyword argument - a list of Table objects which are to
be created/ dropped within a MetaData.create_all() or drop_all()
method call.
If the callable returns a true value, the DDL statement will be
executed.
:param context:
Optional dictionary, defaults to None.  These values will be
available for use in string substitutions on the DDL statement.
:param bind:
Optional. A :class:`.Connectable`, used by
default when ``execute()`` is invoked without a bind argument.
.. seealso::
:class:`.DDLEvents`
:mod:`sqlalchemy.event`'

def __init__(self, statement, on=None, context=None, bind=None):

    if (not isinstance(statement, util.string_types)):
        raise exc.ArgumentError(("Expected    a    string    or    unicode    SQL    statement,    got    '%r'" % statement))
    self.statement = statement
    self.context = (context or {})
    self._check_ddl_on(on)
    self.on = on
    self._bind = bind
