>

오류가 발생했습니다

(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 'radians(151.20711)) + sin(radians(-33.86714)) * sin(radians(latitude)))) AS dist' at line 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

    마침내 해결책을 찾았습니다. 쿼리 내부의 "–"때문입니다. "–"를 "-"로 변경했는데 작동합니다.

관련 자료

  • 이전 python - "깨끗한"분수를 얻기위한 as_integer_ratio ()에 대한 대안이 있습니까?
  • 다음 swift - 인증 후 iOS에서 DynamoDB 사용