좌표 쌍 간의 거리를 계산하고 결과로 테이블 열을 업데이트하려고합니다.SQL 문에 변수 포함 문제 - Python 3.4
루프에서 결과를 인쇄 할 때 각 좌표 쌍 사이의 거리 계산이 잘 작동합니다 (스크린 샷 참조).
그러나 표에 추가 된 거리에 문제가 있습니다 (스크린 샷 참조) - 모든 행의 거리는 15886이고 점 사이의 거리 (-36.8090839, 174.718904)와 (0,0)입니다.
나타납니다. 내 UPDATE 명령이 생성되는 방식에 문제가 있습니다. 구체적으로 테이블에서 제공된 좌표 (위도와 경도)에 대한 변수를 추가하는 것과 관련이 있습니다.
누군가 내가 잘못하고있는 것을 지적 할 수 있습니까?
저는 python을 처음 사용합니다.
import _sqlite3, time, datetime, gpxpy.geo
conn = _sqlite3.connect('SpatialDB')
c = conn.cursor()
lat1 = -36.8090839
lon1 = 174.718904
c.execute('Select * FROM Media')
data = c.fetchall()
for row in data:
lat2 = row[1]
lon2 = row[2]
dist = gpxpy.geo.haversine_distance(lat1, lon1, lat2, lon2)/1000
SQLCommand =("UPDATE Media SET LastQueried = Current_Timestamp, Distance = ?");
value = [dist]
c.execute(SQLCommand, value)
print(dist)
conn.commit()
c.close()
conn.close()
WHERE 절이 없으면 UPDATE는 모든 행을 동일한 값으로 설정합니다. [Wikipedia] (https://en.wikipedia.org/wiki/Update_%28SQL%29) (기사의 맨 끝)를 참조하십시오. – BrenBarn
또한,'conn.commit()'은 루프 내부에 있어야 할 수도 있습니다. 그렇지 않으면 마지막'c.execute()'만이 커밋됩니다. – Parfait