|
tpc at csua.berkeley.edu
tpc at csua.berkeley.edu
Fri Oct 31 09:11:57 EST 2003
hi Andy, I also do not see how this error could be raised. I tested the
statement from IDLE shell as well as the other frameworks I mentioned
below. I also reviewed the table creation statements to see if there was
something re MySQL data types I was missing:
<code>
sql = """CREATE TABLE URLs (
id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
url VARCHAR(255) UNIQUE KEY NOT NULL,
title VARCHAR(255)
) TYPE = InnoDB;"""
sql = """CREATE TEMPORARY TABLE URLs_WITH_MATCHES (
url_id INT NOT NULL,
) TYPE = InnoDB;"""
</code>
As you can see I am selecting two fields, url and title, from URLs where
URLs.id = URLs_WITH_MATCHES.url_id, both are type INT.
On Fri, 31 Oct 2003, Andy Dustman wrote:
> Sorry to have to ask this, but are you sure that's the SQL that
> generates the error? I don't see any way for that error to be raised.
>
> On Mon, 2003-10-27 at 17:14, tpc at csua.berkeley.edu wrote:
> > hi Grisha and Andy, after consulting with my coworker I believe there is a
> > bug in how MySQLdb interacts with mod_python that you should know of. He
> > suggested I try out the same script that was giving me problems with
> > Python CGI, and it works just fine. The only difference is the values in
> > the tuple get switched around, so the tuple that is returned is (title,
> > URL) but no more invalid literal for float, int or long errors. The
> > critical piece of code in question involves an implementation in Python
> > of a MySQL SELECT statement of two fields from one table joined to another
> > table that works just fine from the command line, in MySQL shell, and in
> > Python CGI:
> >
> > sql = """SELECT title, url FROM URLs, URLs_WITH_MATCHES WHERE
> > URLs.id = URLs_WITH_MATCHES.url_id;"""
> > cursor.execute(sql)
> >
> > gives me:
> >
> > <paste>
> > Mod_python error: "PythonHandler mod_python.publisher"
> >
> > Traceback (most recent call last):
> >
> > File "/usr/lib/python2.2/site-packages/mod_python/apache.py", line 335,
> > in HandlerDispatch
> > result = object(req)
> >
> > File "/usr/lib/python2.2/site-packages/mod_python/publisher.py", line
> > 149, in handler
> > module = apache.import_module(module_name, req.get_config(), [path])
> >
> > File "/usr/lib/python2.2/site-packages/mod_python/apache.py", line 502,
> > in import_module
> > module = imp.load_module(mname, f, p, d)
> >
> > File "/var/www/html/python/temp-invalidtest.py", line 51, in ?
> > search(terms)
> >
> > File "/var/www/html/python/temp-invalidtest.py", line 47, in search
> > results = getMP3SearchResults(terms)
> >
> > File "/var/www/html/python/temp-invalidtest.py", line 15, in
> > getMP3SearchResults
> > results = getMatchingURLs(cursor)
> >
> > File "/var/www/html/python/temp-invalidtest.py", line 42, in
> > getMatchingURLs
> > cursor.execute(sql)
> >
> > File "/usr/lib/python2.2/site-packages/MySQLdb/cursors.py", line 95, in
> > execute
> > return self._execute(query, args)
> >
> > File "/usr/lib/python2.2/site-packages/MySQLdb/cursors.py", line 114, in
> > _execute
> > self.errorhandler(self, exc, value)
> >
> > File "/usr/lib/python2.2/site-packages/MySQLdb/connections.py", line 33,
> > in defaulterrorhandler
> > raise errorclass, errorvalue
> >
> > ValueError: invalid literal for float(): <insert any mp3 title here>
> > </paste>
> --
> Andy Dustman PGP: 0x930B8AB6
> @ .net http://dustman.net/andy
> Freedom isn't free. It's sold to the highest bidder.
>
|