Re: Re: Popularity of Quixote

Oleg Broytmann <[email protected]>
Newsgroups gmane.comp.web.quixote.user
Message-ID <[email protected]>
On Thu, Oct 27, 2005 at 11:56:20AM +0100, Paul Moore wrote:
> ... and you generally shouldn't paste escaped values into SQL
> statements, but rather use bind variables in any case.

   Nice theory. Hard in practice. Python DB API drivers are poor at quoting
different data types. I am working on converting SQLObject to use
parametrized queries:

   http://svn.colorstudy.com/home/phd/SQLObject/paramstyles/

   and stumbled upon a major troubles in drivers. Low-level drives do a
poor job converting different types to SQL. For example, PySQLite1 does not
convert boolean values - it actually does

   query_string % parameters

in the code, and SQLite barfs on 'True'/'False' constants.

   psycopg1 does not quote datetime and mxDateTime instances, so

cursor.execute("INSERT VALUES (?,?,?)", 'Yes', datetime.now(), True)

   is executed as

INSERT VALUES ('Yes', 2005-10-10 12:00:01, .t.)

   and Postgres of course aborts such a broken query. Date instances are
even more funny:

INSERT VALUES ('Yes', 2005-10-10, .t.)

   and Postgres report the error: "You are trying to insert an integer into
a DATE column; use cast."
   Yes, 2005-10-10 is an integer, 1985.

Oleg.
-- 
     Oleg Broytmann            http://phd.pp.ru/            [email protected]
           Programmers don't die, they just GOSUB without RETURN.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.