我有以下查询,我正在执行使用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