On Friday, February 25, 2011 at 10:27:34 AM UTC-5, Michael Bayer wrote: > > > On Feb 25, 2011, at 10:20 AM, Jon Nelson wrote: > > > On Fri, Feb 25, 2011 at 9:15 AM, Michael Bayer <[email protected] > <javascript:>> wrote: > >> % is significant in DBAPIs like postgresql and mysqldb where pyformat > and format: %(foo)s and %s, are allowed, so % must be doubled. > > > > So does psycopg2 send '%' or '%%' ? > > psycopg2 is the DBAPI here, % is significant so the client of DBAPI must > escape % that is not part of a string format. > > > > It seems to me that if the > > strings are held as atoms (individual arguments rather than a single, > > sorry, I don't know what you mean by "individual arguments", do you mean > bind params, i.e. :p1 + :p2 + :p3 ? > > > concatenated string) then '%%' is unnecessary. > > > The compiler most certainly needs to escape literal-rendered % signs > across the board on those DBAPIs where the symbol has other meanings, since > a user might use literal_column() with a '%' sign in it, and would like > this symbol to behave the same way on all backends. > > > > I can understand why a '%' needs to be doubled in a typical statement such as a select. However, I also see a '%' doubled inside the definition of a CheckConstraint when I compile and print a Table containing the CheckConstraint object for the purpose of generating a DDL script. The constraint expression should be left alone. In Postgres, '%%' means the same as '%' when used with LIKE, but I'd still like to avoid the unnecessary doubling.
-- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.
