Opened 19 years ago
Closed 19 years ago
#3962 closed (invalid)
sqlite3 backend does not allow '%i' in cursor.execute
| Reported by: | anonymous | Owned by: | Adrian Holovaty |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | dev |
| Severity: | Keywords: | sqlite int integer %i | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
In file /usr/lib/python2.4/site-packages/django/db/backends/sqlite3/base.py is sais:
def convert_query(self, query, num_params):
return query % tuple("?" * num_params)
This raises a TypeError in cases like: "SELECT * FROM table WHERE id = %i" % tuple("?" * 1), because '?' is no int.
A workaround for this special case could be
return query.replace('%i', '%s') % tuple("?" * num_params)
Note:
See TracTickets
for help on using tickets.
When does this occur? will this only happen when using custom SQL?