This is most likely far from a working solution, but I think the best way to do this is to subclass sqlalchemy.schema._CreateDropBase .
from sqlalchemy.schema import _CreateDropBase class CreateDomain(_CreateDropBase): '''Represent a CREATE DOMAIN statement.''' __visit_name__ = 'create_domain' def __init__(self, element, bind=None, **kw): super(CreateDomain, self).__init__(element, bind=bind, **kw) class DropDomain(_CreateDropBase): '''Represent a DROP BASE statement.''' __visit_name__ = 'drop_domain' def __init__(self, element, bind=None, **kw): super(DropDomain, self).__init__(element, bind=bind, **kw) @compiles(CreateDomain, 'postgresql') def visit_create_domain(element, compiler, **kw): text = '\nCREATE DOMAIN %s AS %s' % ( compiler.prepare.format_column(element.name), compiler.preparer.format_column(element.type_))
Obviously this is incomplete, but it should give you a good starting point if you want it bad enough. :)
Tyler crompton
source share