Note that there are some explanatory texts on larger screens.

plurals
  1. PODjango: RawQuerySet problem with passing multiple params
    primarykey
    data
    text
    <p>I've used answer from this question:</p> <blockquote> <p><a href="https://stackoverflow.com/questions/2944261/django-making-raw-sql-query-passing-multiple-repeated-params">Django: making raw SQL query, passing multiple/repeated params?</a></p> </blockquote> <p>but have some problems. </p> <p>I have params:</p> <pre><code>params = {'film_id_string': 'core_film.parent_id', 'tags_params': 'comedy', 'order_by': 'core_film.title', 'content_type': '18', 'language_code': 'en'} </code></pre> <p>for SQL query: </p> <pre><code>query = 'SELECT DISTINCT "core_object".*, "core_film".* FROM "core_film" INNER JOIN "core_object" ON ("core_film"."parent_id" = "core_object"."id") LEFT OUTER JOIN "core_objectlocalized" ON ("core_objectlocalized"."parent_id" = %(film_id_string)s) LEFT OUTER JOIN "tagging_taggeditem" ON ("tagging_taggeditem"."object_id" = "core_objectlocalized"."id") LEFT OUTER JOIN "tagging_tag" ON ("tagging_tag"."id" = "tagging_taggeditem"."tag_id") WHERE "tagging_tag"."name" IN (%(tags_params)s) AND "core_objectlocalized"."LANG"=%(language_code)s AND content_type_id=%(content_type)s ORDER BY %(order_by)s' </code></pre> <p>When I tried to use RawQuerySet</p> <pre><code>films = Film.objects.raw(query, params) </code></pre> <p>I get:</p> <pre><code>SELECT DISTINCT "core_object".*, "core_film".* FROM "core_film" INNER JOIN "core_object" ON ("core_film"."parent_id" = "core_object"."id") LEFT OUTER JOIN "core_objectlocalized" ON ("core_objectlocalized"."parent_id" = E\'core_film.parent_id\') LEFT OUTER JOIN "tagging_taggeditem" ON ("tagging_taggeditem"."object_id" = "core_objectlocalized"."id") LEFT OUTER JOIN "tagging_tag" ON ("tagging_tag"."id" = "tagging_taggeditem"."tag_id") WHERE "tagging_tag"."name" IN (E\'comedy\') AND "core_objectlocalized"."LANG"=E\'en\' AND content_type_id=E\'18\' ORDER BY E\'core_film.title\' </code></pre> <p>Problem is, that every place with <code>'E\'</code> generate error similar to this:</p> <pre><code>DatabaseError: invalid input syntax for integer: "core_film.parent_id" LINE 1: ...calized" ON ("core_objectlocalized"."parent_id" = E'core_fil... </code></pre> <p>How can I fix this?</p> <p>Django version 1.2.3.</p> <p><strong>edit</strong><br> I can't remove quotes, because I work with string:</p> <pre><code>result = self.function(result, tag, "core_film.parent_id") def function(self, objects, tags, film_id_string): </code></pre> <p>My params for RawQuerySet look like this:</p> <pre><code>params = {'film_id_string': film_id_string} </code></pre> <p>When I try to parse this I get:</p> <pre><code>LEFT OUTER JOIN "core_objectlocalized" ON ("core_objectlocalized"."parent_id" = E\'core_film.parent_id\') </code></pre> <p>and then I have problems with</p> <pre><code>DatabaseError: invalid input syntax for integer: "core_film.parent_id" LINE 1: ...calized" ON ("core_objectlocalized"."parent_id" = E'core_fil... </code></pre> <p>but, when I use string formatting</p> <pre><code>LEFT OUTER JOIN "core_objectlocalized" ON ("core_objectlocalized"."parent_id" = %s)' % film_id_string </code></pre> <p>it works:</p> <pre><code>LEFT OUTER JOIN "core_objectlocalized" ON ("core_objectlocalized"."parent_id" = core_film.parent_id) </code></pre> <p>I want to ommit posibility of SQL injection, so basing on <a href="http://docs.djangoproject.com/en/dev/topics/db/sql/#passing-parameters-into-raw" rel="nofollow noreferrer">Django docs</a> I don't want to pass params with string formatting.<br> What can I else do?</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload