Opened 16 years ago
Last modified 2 years ago
#10070 closed
Named parameters not working on raw sql queries with sqlite — at Initial Version
Reported by: | Matias Surdi | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | shai@…, mike@…, Joseph Gordon | Triage Stage: | Ready for checkin |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
The following code shows the problem when using sqlite:
$ python manage.py shell
Python 2.5.2 (r252:60911, Oct 5 2008, 19:29:17)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
from django.db import connection
c = connection.cursor()
c.execute("select name from inventory_host where id=%(id)s",{'id':'1'})
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/lib/python2.5/site-packages/django/db/backends/util.py", line 19, in execute
return self.cursor.execute(sql, params)
File "/usr/lib/python2.5/site-packages/django/db/backends/sqlite3/base.py", line 167, in execute
query = self.convert_query(query, len(params))
File "/usr/lib/python2.5/site-packages/django/db/backends/sqlite3/base.py", line 179, in convert_query
return query % tuple("?" * num_params)
TypeError: format requires a mapping
import django
django.VERSION
(1, 0, 2, 'final', 0)
$ sqlite3 --version
3.5.9
When using Mysql or Postgres, that works (not tested by me, but by others on django-users).