我遇到错误
(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)
答案 0 :(得分:0)
我终于找到了解决方案。 这是因为查询中有“ –”。 我将“ –”更改为“-”,可以正常工作。