you have to escape those out with %%.

On Jan 18, 2012, at 3:06 AM, lestat wrote:

> Hi!
> 
> 
> If I create DDL like this with %:
> 
> event.listen(db.metadata, 'after_create', DDL(
>    """
>    CREATE OR REPLACE FUNCTION test_func() RETURNS void AS $$
>    DECLARE
>    max_user_id INTEGER;
>    BEGIN
>    SELECT INTO max_user_id MAX("id") FROM "user";
>    RAISE INFO 'max_user_id: (%)', max_user_id;
>    END;
>    $$ LANGUAGE plpgsql;
> 
>    """
> ))
> 
> 
> and in python shell call db.create_all() for create tables I got
> exception:
> 
> 
> 
> ----> 1 db.create_all()
> 
> /usr/lib/python2.7/site-packages/flaskext/sqlalchemy.pyc in
> create_all(self, bind, app)
>    793            Parameters were added
>    794         """
> --> 795         self._execute_for_all_tables(app, bind, 'create_all')
>    796
>    797     def drop_all(self, bind='__all__', app=None):
> 
> /usr/lib/python2.7/site-packages/flaskext/sqlalchemy.pyc in
> _execute_for_all_tables(self, app, bind, operation)
>    785             tables = self.get_tables_for_bind(bind)
>    786             op = getattr(self.Model.metadata, operation)
> --> 787             op(bind=self.get_engine(app, bind), tables=tables)
>    788
>    789     def create_all(self, bind='__all__', app=None):
> 
> /usr/lib/python2.7/site-packages/sqlalchemy/schema.pyc in
> create_all(self, bind, tables, checkfirst)
>   2513                             self,
>   2514                             checkfirst=checkfirst,
> -> 2515                             tables=tables)
>   2516
>   2517     def drop_all(self, bind=None, tables=None,
> checkfirst=True):
> 
> /usr/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in
> _run_visitor(self, visitorcallable, element, connection, **kwargs)
>   2232             conn = connection
>   2233         try:
> -> 2234             conn._run_visitor(visitorcallable, element,
> **kwargs)
>   2235         finally:
>   2236             if connection is None:
> 
> /usr/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in
> _run_visitor(self, visitorcallable, element, **kwargs)
>   1902     def _run_visitor(self, visitorcallable, element,
> **kwargs):
>   1903         visitorcallable(self.dialect, self,
> -> 1904                             **kwargs).traverse_single(element)
>   1905
>   1906
> 
> /usr/lib/python2.7/site-packages/sqlalchemy/sql/visitors.pyc in
> traverse_single(self, obj, **kw)
>     84             meth = getattr(v, "visit_%s" % obj.__visit_name__,
> None)
>     85             if meth:
> ---> 86                 return meth(obj, **kw)
>     87
>     88     def iterate(self, obj):
> 
> /usr/lib/python2.7/site-packages/sqlalchemy/engine/ddl.pyc in
> visit_metadata(self, metadata)
>     70                                     tables=collection,
>     71
> checkfirst=self.checkfirst,
> ---> 72                                             _ddl_runner=self)
>     73
>     74     def visit_table(self, table, create_ok=False):
> 
> /usr/lib/python2.7/site-packages/sqlalchemy/event.pyc in
> __call__(self, *args, **kw)
>    272             fn(*args, **kw)
>    273         for fn in self.listeners:
> --> 274             fn(*args, **kw)
>    275
>    276     # I'm not entirely thrilled about the overhead here,
> 
> 
> /usr/lib/python2.7/site-packages/sqlalchemy/schema.pyc in
> __call__(self, target, bind, **kw)
>   2823
>   2824         if self._should_execute(target, bind, **kw):
> -> 2825             return bind.execute(self.against(target))
>   2826
>   2827     def _check_ddl_on(self, on):
> 
> /usr/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in
> execute(self, object, *multiparams, **params)
>   1403                                                 object,
>   1404                                                 multiparams,
> -> 1405                                                 params)
>   1406         else:
>   1407             raise exc.InvalidRequestError(
> 
> /usr/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in
> _execute_ddl(self, ddl, multiparams, params)
>   1488         dialect = self.dialect
>   1489
> -> 1490         compiled = ddl.compile(dialect=dialect)
>   1491         ret = self._execute_context(
>   1492             dialect,
> 
> /usr/lib/python2.7/site-packages/sqlalchemy/sql/expression.pyc in
> compile(self, bind, dialect, **kw)
>   1720             else:
>   1721                 dialect = default.DefaultDialect()
> -> 1722         return self._compiler(dialect, bind=bind, **kw)
>   1723
>   1724     def _compiler(self, dialect, **kw):
> 
> /usr/lib/python2.7/site-packages/sqlalchemy/schema.pyc in
> _compiler(self, dialect, **kw)
>   2850         Dialect."""
>   2851
> -> 2852         return dialect.ddl_compiler(dialect, self, **kw)
>   2853
>   2854 class DDL(DDLElement):
> 
> /usr/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in
> __init__(self, dialect, statement, bind)
>    697             self.statement = statement
>    698             self.can_execute = statement.supports_execution
> --> 699             self.string = self.process(self.statement)
>    700
>    701     @util.deprecated("0.7", ":class:`.Compiled` objects now
> compile "
> 
> /usr/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in
> process(self, obj, **kwargs)
>    716
>    717     def process(self, obj, **kwargs):
> --> 718         return obj._compiler_dispatch(self, **kwargs)
>    719
>    720     def __str__(self):
> 
> /usr/lib/python2.7/site-packages/sqlalchemy/sql/visitors.pyc in
> _compiler_dispatch(self, visitor, **kw)
>     57             getter = operator.attrgetter("visit_%s" %
> visit_name)
>     58             def _compiler_dispatch(self, visitor, **kw):
> ---> 59                 return getter(visitor)(self, **kw)
>     60         else:
>     61             def _compiler_dispatch(self, visitor, **kw):
> 
> /usr/lib/python2.7/site-packages/sqlalchemy/sql/compiler.pyc in
> visit_ddl(self, ddl, **kwargs)
>   1345             context.setdefault('fullname',
> preparer.format_table(ddl.target))
>   1346
> -> 1347         return
> self.sql_compiler.post_process_text(ddl.statement % context)
>   1348
>   1349     def visit_create_schema(self, create):
> 
> ValueError: unsupported format character ')' (0x29) at index 192
> 
> 
> How I can fix this?
> 
> Thanks!
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To post to this group, send email to sqlalchemy@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.
> 

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@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.

Reply via email to