Python 使用SQLite查询检索多个项
我正在尝试制作一个简单的地图制作功能。我有一个包含地理坐标(“纬度”和“经度”)、地名(“要素名称”)和ISO-3166国家代码(“国家代码”)的数据库。现在我只需要查询lat/long并让Folium制作我的地图就可以了,但问题是,世界上有多个渥太华人、万库弗人、伦敦人等等。因此引入了国家代码,试图缩小范围 我的问题是,我似乎无法让SQL查询返回任何内容。代码执行时不会向我抛出错误,但不会返回任何内容。 TL;DR:如何对数据库进行多个查询Python 使用SQLite查询检索多个项,python,sqlite,Python,Sqlite,我正在尝试制作一个简单的地图制作功能。我有一个包含地理坐标(“纬度”和“经度”)、地名(“要素名称”)和ISO-3166国家代码(“国家代码”)的数据库。现在我只需要查询lat/long并让Folium制作我的地图就可以了,但问题是,世界上有多个渥太华人、万库弗人、伦敦人等等。因此引入了国家代码,试图缩小范围 我的问题是,我似乎无法让SQL查询返回任何内容。代码执行时不会向我抛出错误,但不会返回任何内容。 TL;DR:如何对数据库进行多个查询 cur.execute("SELECT featur
cur.execute("SELECT feature_name FROM WorldCities")
locnames = str(cur.fetchall())
cur.execute("SELECT country_code FROM WorldCities")
countrycodes = str(cur.fetchall())
def mapmaker():
location = input(prompt = "Where would you like to go? ")
country = input(prompt = "Great! Do you know which country this is in? ")
if not location:
input(prompt = "Sorry, I didn't quite get that")
if location in locnames and country in countrycodes:
#latquery = "SELECT latitude FROM WorldCities WHERE feature_name = ? AND country_code = ?"
#lat = cur.execute(latquery, (location, ))
latquery = cur.execute("SELECT latitude FROM WorldCities WHERE feature_name = ? AND country_code = ?", ((location,) (countrycodes,)))
#lat = cur.execute(latquery, (location, + countrycodes))
latloc = (latquery.fetchall())
#longquery = "SELECT longitude FROM WorldCities WHERE feature_name = ?"
#long = cur.execute(longquery, (location, ))
#longloc = (long.fetchone())
print(latloc) #longloc[0], country[0])
#map = folium.Map(location=(latloc[0], longloc[0]), zoom_start=15)
#return map
else:
print ("Sorry, I didn't understand your query")
谢谢数据库比简单的行列表更智能。特别是,它可以包含索引以加速查询。如果不知道数据库是否索引以及如何索引,则无法优化查询 如果数据库包含索引,则不应在平面列表中加载其内容,而应使用直接查询 也就是说,您可以从查询中检索多个列,因此从表中提取地理坐标的正确方法应该是:
latlonquery = cur.execute("""SELECT latitude, longitude FROM WorldCities
WHERE feature_name = ? AND country_code = ?""", (location, countrycodes))
lat_lon = latlonquery.fetchone()
if lat_lon is not None:
lat, lon = lat_lon
print(lat, lon, location, country)
...
不要将元组的元组传递给查询生成器,您也可能希望传递国家代码,而不是整个列表,即:
(位置、国家)
。