i tried swap the WHERE condition become like this:
WHERE %s placeType_id=%s \

and tags:
tags = " (placeTag LIKE '%" + "%' OR placeTag LIKE 
'%".join(placeTag.split(',')) + "%') AND "

but got this error:
DatabaseError: (1064, "You have an error in your SQL syntax; check the 
manual that corresponds to your MySQL server version for the right syntax 
to use near 'placeType_id='1' GROUP BY p.placeId HAVING placeDistance' at 
line 1")

I thought the query syntax already correct, but why i got that error?
WHERE (placeTag LIKE '%test%') AND placeType_id='1' GROUP BY p.placeId 
HAVING placeDistance

On Thursday, July 18, 2013 4:09:36 AM UTC+7, spondbob squelpen wrote:
>
> I've tried the debugger but i have no idea how to use it to find my 
> problem. in Pdb console i've tried check any variable value and everything 
> seems fine
>
> On Wednesday, July 17, 2013 10:34:39 PM UTC+7, [email protected] wrote:
>>
>> On Wed, Jul 17, 2013 at 9:28 AM, spondbob squelpen <[email protected]> 
>> wrote: 
>> > sorry i'm new with django, could u please tell me how to use the 
>> debugger? 
>>
>> In your python code, add this "import pdb; pdb.set_trace()' at the 
>> place you want the breakpoint. 
>>
>> Then run: 
>>
>> python manage.py runserver 
>>
>> Then go to your web page that will cause your code to be invoked, but 
>> add :8000 to the address (e.g. http://127.0.0.1:8000/...) 
>>
>> Then when it hits your breakpoint you can set other breakpoints, print 
>> out variables, step though your program, etc. 
>>
>> http://docs.python.org/2/library/pdb.html 
>>
>> > On Wednesday, July 17, 2013 10:17:10 PM UTC+7, [email protected]: 
>> >> 
>> >> On Wed, Jul 17, 2013 at 9:15 AM, spondbob squelpen <[email protected]> 
>>
>> >> wrote: 
>> >> > the '1' is coming from typeId, so the WHERE condition must be look 
>> like: 
>> >> > WHERE placeType_id=1  AND (placeTag LIKE '%test%') 
>> >> > 
>> >> > print out tags: 
>> >> >  AND (placeTag LIKE '%test%') 
>> >> > 
>> >> > i have tried your solution by adding double percentage but still got 
>> >> > same 
>> >> > error 
>> >> 
>> >> Like I said, use the debugger. 
>> >> 
>> >> > 
>> >> > On Wednesday, July 17, 2013 10:04:48 PM UTC+7, [email protected] 
>> >> > wrote: 
>> >> >> 
>> >> >> On Wed, Jul 17, 2013 at 8:58 AM, spondbob squelpen <
>> [email protected]> 
>> >> >> wrote: 
>> >> >> > where do i put those double percentage? like this? 
>> >> >> > tags = " AND (placeTag LIKE '%%" + "%%' OR placeTag LIKE 
>> >> >> > '%%".join(placeTag.split(',')) + "%%')" 
>> >> >> > 
>> >> >> > but still got the same error: 
>> >> >> > Warning: Truncated incorrect DOUBLE value: '1 AND (placeTag LIKE 
>> >> >> > '%%test%%')' 
>> >> >> 
>> >> >> Where is the '1' coming from? I'd set a breakpoint here and run the 
>> >> >> development server and see exactly what is going on. Print out the 
>> >> >> tags and query, and if necessary step into Place.objects.raw. 
>> >> >> 
>> >> >> > 
>> >> >> > On Wednesday, July 17, 2013 9:47:25 PM UTC+7, [email protected] 
>> >> >> > wrote: 
>> >> >> >> 
>> >> >> >> On Wed, Jul 17, 2013 at 8:24 AM, spondbob squelpen 
>> >> >> >> <[email protected]> 
>> >> >> >> wrote: 
>> >> >> >> > I have problem in django using query statement "like %s%" with 
>> >> >> >> > Model.objects.raw(). I guess the problem is on '%' character 
>> but i 
>> >> >> >> > don't 
>> >> >> >> > know where is it. Here's my model's code: 
>> >> >> >> > 
>> >> >> >> >     def listInRange(self, placeLat, placeLng, typeId, range, 
>> >> >> >> > placeTag): 
>> >> >> >> >         tags = '' 
>> >> >> >> >         if placeTag: 
>> >> >> >> >             tags = "AND (placeTag LIKE '%" + "%' OR placeTag 
>> LIKE 
>> >> >> >> > '%".join(placeTag.split(',')) + "%')" 
>> >> >> >> > 
>> >> >> >> >         query = "SELECT *, \ 
>> >> >> >> >                 ( \ 
>> >> >> >> >                     6371000 * \ 
>> >> >> >> >                     acos( \ 
>> >> >> >> >                         cos( radians(%s) ) * \ 
>> >> >> >> >                         cos( radians(placeLat) ) * \ 
>> >> >> >> >                         cos( radians(placeLng) - radians(%s) ) 
>> + \ 
>> >> >> >> >                         sin( radians(%s) ) * \ 
>> >> >> >> >                         sin( radians(placeLat) ) \ 
>> >> >> >> >                     ) \ 
>> >> >> >> >                 ) AS placeDistance, \ 
>> >> >> >> >             COUNT(r.reviewId) as placeReviews, \ 
>> >> >> >> > 
>> >> >> >> > 
>> >> >> >> > 
>> >> >> >> > 
>> >> >> >> > 
>> (SUM(r.reviewPointPrice)/COUNT(r.reviewId)+SUM(r.reviewPointService)/COUNT(r.reviewId)+SUM(r.reviewPointLocation)/COUNT(r.reviewId)+SUM(r.reviewPointCondition)/COUNT(r.reviewId)+SUM(r.reviewPointComfort)/COUNT(r.reviewId))/5
>>  
>>
>> >> >> >> > AS averagePoint \ 
>> >> >> >> >             FROM place_place p \ 
>> >> >> >> >             LEFT JOIN review_review r \ 
>> >> >> >> >             ON r.reviewPlace_id = p.placeId\ 
>> >> >> >> >             WHERE placeType_id = %s %s \ 
>> >> >> >> >             GROUP BY p.placeId \ 
>> >> >> >> >             HAVING placeDistance < %s \ 
>> >> >> >> >             ORDER BY placeDistance" 
>> >> >> >> > 
>> >> >> >> >         return Place.objects.raw(query, [placeLat, placeLng, 
>> >> >> >> > placeLat, 
>> >> >> >> > typeId, tags, range]) 
>> >> >> >> > 
>> >> >> >> > If placeTag is not empty, then it will added to the WHERE 
>> >> >> >> > condition. 
>> >> >> >> > When 
>> >> >> >> > the placeTag is empty there's no such problem, but when 
>> placeTag 
>> >> >> >> > is 
>> >> >> >> > not 
>> >> >> >> > empty i got this error : 
>> >> >> >> > 
>> >> >> >> >     Warning: Truncated incorrect DOUBLE value: '1AND (placeTag 
>> >> >> >> > LIKE 
>> >> >> >> > '%cafe%' 
>> >> >> >> > OR placeTag LIKE '%pub%')' 
>> >> >> >> > 
>> >> >> >> > I guess python make '1 AND (placeTag LIKE '%cafe%' OR placeTag 
>> >> >> >> > LIKE 
>> >> >> >> > '%pub%')' as the value for placeType_id. How can i make the 
>> value 
>> >> >> >> > of 
>> >> >> >> > placeType_id=1 and add the AND statement? What's the better 
>> way to 
>> >> >> >> > write 
>> >> >> >> > the 
>> >> >> >> > sql statement using Model.objects.raw() with 'like' statement? 
>> >> >> >> 
>> >> >> >> You need '%%' when you want to end up with '%' 
>> >> >> > 
>> >> >> > -- 
>> >> >> > You received this message because you are subscribed to the 
>> Google 
>> >> >> > Groups 
>> >> >> > "Django users" group. 
>> >> >> > To unsubscribe from this group and stop receiving emails from it, 
>> >> >> > send 
>> >> >> > an 
>> >> >> > email to [email protected]. 
>> >> >> > To post to this group, send email to [email protected]. 
>> >> >> > Visit this group at http://groups.google.com/group/django-users. 
>> >> >> > For more options, visit https://groups.google.com/groups/opt_out. 
>>
>> >> >> > 
>> >> >> > 
>> >> > 
>> >> > -- 
>> >> > You received this message because you are subscribed to the Google 
>> >> > Groups 
>> >> > "Django users" group. 
>> >> > To unsubscribe from this group and stop receiving emails from it, 
>> send 
>> >> > an 
>> >> > email to [email protected]. 
>> >> > To post to this group, send email to [email protected]. 
>> >> > Visit this group at http://groups.google.com/group/django-users. 
>> >> > For more options, visit https://groups.google.com/groups/opt_out. 
>> >> > 
>> >> > 
>> > 
>> > -- 
>> > You received this message because you are subscribed to the Google 
>> Groups 
>> > "Django users" group. 
>> > To unsubscribe from this group and stop receiving emails from it, send 
>> an 
>> > email to [email protected]. 
>> > To post to this group, send email to [email protected]. 
>> > Visit this group at http://groups.google.com/group/django-users. 
>> > For more options, visit https://groups.google.com/groups/opt_out. 
>> > 
>> > 
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to