I've run into an issue using a manager for a model to run some custom
sql.
A dumbed down version of the code looks something like this:
------------------------------------------------------------------------
cursor = connection.cursor()
# Get list of zipcodes
zips = [zip.zipcode for zip in
Zip_Code.objects.filter(lat__range=(min_lat, max_lat),
lon__range=(min_lon, max_lon))]

sql = """
SELECT id
FROM Event
WHERE zip_code IN %s"""
cursor.execute(sql, (zips,))

------------------------------------------------------------------------
The Zipcode field is a VARCHAR(10) in the database, so the zipcodes in
the list are unicode strings.  If I run the query this way, I get 0
results.  Although If I copy the sql it generates and run it I get
several results.

The interesting this is if I cast the zipcode to an integer then the
query works.  I also tried casting each zipcode to a regular string
but it also returns 0 results.  So it looks like in order for the IN
function to work for the MySQLdb backend it must be a list of
integers.  This doesn't work so well for zipcodes that begin with 0's
like Burlington VT which is "05401".

Is there some trick I am missing, or is this a genuine bug in the
python MySQLdb module?

Thanks in advance.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to