Mysql django';比如';Model.objects.raw()中的语句
我在django中对Model.objects.raw()使用查询语句“like%s%”时遇到问题。我想问题出在“%”字符上,但我不知道它在哪里。以下是我的模型代码:Mysql django';比如';Model.objects.raw()中的语句,mysql,django,sql-like,Mysql,Django,Sql Like,我在django中对Model.objects.raw()使用查询语句“like%s%”时遇到问题。我想问题出在“%”字符上,但我不知道它在哪里。以下是我的模型代码: def listInRange(self, placeLat, placeLng, typeId, range, placeTag): tags = '' if placeTag: tags = "AND (placeTag LIKE '%" + "%' OR placeTag LIKE '%".j
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])
使用Model.objects.raw()和'like'语句编写sql语句的更好方法是什么?“1和”
在输出中首先让我觉得您缺少一些空格字符(在用于连接ex的字符串的开头和结尾)
在您的情况下,where子句是“where placeType_id=1 and(placeTag…”
通常,如果您试图将double与非double进行比较,就会出现这种错误,但当逻辑断言拼写不正确时,也会出现这种错误 稍后,如果出现错误“column不存在”,请小心大写,某些DBG不会读取“”或“”的大小写。我已将其更改为:“WHERE placeType_id=%s%s\”并出现错误:“警告:截断了不正确的双精度值:'1和(类似于“%tes%”的placeTag)”。现在呢?我猜python会将其改为“1和(类似于“%tes%”的placeTag)'作为placeType_id的值。如何使placeType_id的值为1并添加and语句?
Warning: Truncated incorrect DOUBLE value: '1AND (placeTag LIKE '%cafe%' OR placeTag LIKE '%pub%')'