我有以下查詢,我正在執行使用Python腳本(通過使用MySQLdb模塊)。Python和MySQLdb
conn=MySQLdb.connect (host = "localhost", user = "root",passwd = "<password>",db = "test")
cursor = conn.cursor()
preamble='set @radius=%s; set @o_lat=%s; set @o_lon=%s; '%(radius,latitude,longitude)
query='SELECT *, (6371*1000 * acos(cos(radians(@o_lat)) * cos(radians(lat)) * cos(radians(lon) - radians(@o_lon)) + sin(radians(@o_lat)) * sin(radians(lat))) as distance FROM poi_table HAVING distance < @radius ORDER BY distance ASC LIMIT 0, 50)'
complete_query=preamble+query
results=cursor.execute (complete_query)
print results
半徑,緯度和經度的值並不重要,但它們在腳本執行時定義。令我困擾的是,上面的代碼片段沒有返回任何結果。基本上意味着查詢被執行的方式是不可靠的。我執行了SQL查詢(包括帶有實際值的設置變量,並返回了正確數量的結果)。
如果我修改查詢只是一個簡單的SELECT FROM查詢(SELECT * FROM poi_table
)它返回結果。這裏發生了什麼?
編輯:括號內封裝haversine公式計算
我很生氣,因爲犯了這樣一個愚蠢的錯誤。謝謝您的幫助。 – GobiasKoffi 2010-06-03 03:38:58