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.

Reply via email to