我試圖計算座標對之間的距離,並用結果更新表列。在SQL語句中包含變量的問題 - 在Python 3.4中
當我打印循環結果時(見截圖),每對座標之間距離的計算工作正常。
但是,添加到表格的距離存在問題(請參見截圖) - 所有行的距離爲15886,點(-36.8090839,174.718904)和(0,0)之間的距離。
看來我的問題是如何構建我的UPDATE命令 - 特別是從表格中獲取座標(lat和long)的變量。
有人能指出我做錯了什麼嗎?
我是新來的蟒蛇。
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