一次两次选择查询python

2024-05-14 21:43:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我想计算两点之间的距离。为此,对于一个表中的每个点,我必须计算与同一数据库中另一个表中所有其他点的距离。我使用python来实现这一点,但是我不能一次执行两个查询。在

import mysql.connector
from haversine import haversine

cnx = mysql.connector.connect(host='localhost',user='xxxxx',passwd='xxxxxx',db='xxxxxx')
cursor = cnx.cursor()
cursor2 = cnx.cursor()

query = ("select longitude,latitude from roadData limit 5")
cursor.execute(query)

query2=("SELECT geo_coordinates_latitude, geo_coordinates_longitude from tweetmelbourne limit 2")
cursor2.execute(query2)

for (longitude,latitude) in cursor:
    print longitude
    print latitude
    for (geo_coordinates_longitude,geo_coordinates_latitude) in cursor2:
        print geo_coordinates_longitude
        print geo_coordinates_latitude


cursor.close()
cnx.close() 

但是,第二次执行查询时出现错误

InternalError: Unread result found.

我尝试对游标使用buffer=true,但仍然存在相同的错误。 这样做是有效的还是其他更好的方式。在


Tags: fromimport距离connectormysqlcursorgeoprint
1条回答
网友
1楼 · 发布于 2024-05-14 21:43:56

这里可以使用的一个技巧是将两个表交叉连接在一起:

SELECT t1.longitude,
       t1.latitude,
       t2.geo_coordinates_latitude,
       t2.geo_coordinates_longitude
FROM
(
    SELECT longitude, latitude
    FROM roadData
    LIMIT 5
) t1
CROSS JOIN
(
    SELECT geo_coordinates_latitude, geo_coordinates_longitude
    FROM tweetmelbourne
    LIMIT 2
) t2

这应该是可行的,因为在Python代码中迭代结果集的方式类似于交叉连接。在这种情况下,使用上面的查询,您只需要在整个结果集上迭代一次。在

相关问题 更多 >

    热门问题