Hi, I have problem to understand which way should be used to write custom DDL class. I'm generating some stored procedures for my tables. The procedures are very similar and I'd like to use some generic way. Now I'm nearly done, but I need some way how to extract some information from table to use it in my DDL.
I discovered that for this I need the engine where DDL runs. My custom class may look like this: class CustomDDL(DDL): def against(self, target): # Is this the method I should generate the DDL? How can I access engine from here? self.target = target There is also possibility to create a __call__ method where the engine is, but I'm not sure if this is the right place. So my questions: - which method I should override to make my custom DDL substitution - do I need to base class on DDL or DDLElement? I can create my own, but I'm not sure if I can add it. Currently I'm using something like this to inject some triggers/functions: _DDL_MATCHER = re.compile(ur"\$\{(_\w+)\:{0,1}([^\}]*)\}") class CustomDDL(object): def __init__(self, event, ddl): self.event = event self.ddl = ddl def inject(self, table): DDL(self.compile(table)).execute_at(self.event, table) def compile(self, table): global _DDL_MATCHER def repl(match): func = match.group(1) args = match.group(2) return getattr(self, func)(table, args) return _DDL_MATCHER.sub(repl, self.ddl); def _TABLE(self, table, args): return table.name + args def _PREPARE_DECLARATION(self, table, args): result = u"" if hasattr(table, "area"): for column in table.area: #result += u"condition_" + unicode(column.name) + u" " + \ # unicode(column.type.get_dbapi_type(engine.dialect.dbapi)) + u"; " pass return result def _PREPARE_CONDITION(self, table, args): return "" def _WHERE(self, table, args): if args: return u"WHERE " + args else: return u"" This works for me, except I need to access the engine. Thanks for any info about this Best regards Petr -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.