Mysql django';比如';Model.objects.raw()中的语句

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

我在django中对Model.objects.raw()使用查询语句“like%s%”时遇到问题。我想问题出在“%”字符上,但我不知道它在哪里。以下是我的模型代码:

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%')'