django的原始SQL语法有错误

时间:2019-05-12 14:40:48

标签: mysql django

我遇到错误

  

(1064,“您的SQL语法有误;请查看与您的MySQL服务器版本相对应的手册,以获取正确的语法以在'radians(151.20711))+ sin(radians(-33.86714))* sin中使用(弧度(纬度))))AS dist'在第1行“)

当我运行下面的代码时。

query = '''SELECT id, longitude, latitude, (6378 * acos(cos(radians(-33.86714)) * cos(radians(latitude)) * cos(radians(longitude) – radians(151.20711)) + sin(radians(-33.86714)) * sin(radians(latitude)))) AS distance 
FROM ads_suburb HAVING distance < 10 ORDER BY distance;'''
surrounded_suburbs = Suburb.objects.raw(query)
for suburb in surrounded_suburbs:
    print(suburb.id)

我需要在哪里修复?

已更新

我尝试了另一种方法,但仍然出现相同错误。

cursor = connection.cursor()
cursor.execute('''SELECT id, longitude, latitude, (6378 * acos(cos(radians(-33.86714)) * cos(radians(latitude)) * cos(radians(longitude) – radians(151.20711)) + sin(radians(-33.86714)) * sin(radians(latitude)))) AS distance FROM ads_suburb HAVING distance < 10 ORDER BY distance;''')
ids = [row[0] for row in cursor.fetchall()]
print(ids)

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案。 这是因为查询中有“ –”。 我将“ –”更改为“-”,可以正常工作。