TypeError:无法连接Flask中的'str'和'float'对象

问题描述:

我使Python代码可以与MySQL和Flask一起工作。TypeError:无法连接Flask中的'str'和'float'对象

如果用户在web中输入位置名称和半径,Python代码会搜索有关MySQL中半径内位置和其他位置的信息。

这里是我的代码

“名字”是由用户输入地点名称。
'ron'是用户输入的半径。

@app.route('/index', methods=["GET","POST"]) 
def search_location(names, ron): 
    row2=[] 
    dis=ron/100 
    cur = mysql.connect().cursor() 
    cur.execute("select * from map_info where loc_name = '"+names+"'") 
    info_db = cur.fetchall() 

    cur.execute("select mapY, mapX from map_info where loc_name = '"+names+"'") 
     for row in cur: 
      print row 
    row2.append(float(row[0])) 
    row2.append(float(row[1])) 
    row2.append(int(dis)) 

    cur.execute("select loc_name, mapY, mapX (6371 * acos(cos(radians("+row2[0]+ ") * cos(radians(mapY)) * cos(radians(mapX)- radians("+row2[1]+"))+ sin(radians("+row2[0]+")) * sin(radians(mapY)))) as distance FROM map_info HAVING distance < "+row2[2]) 

return render_template('index.html', results=info_db, rons=ron) 

但“类型错误:不能连接‘STR’和‘浮动’对象”是发生在半径范围内搜索的位置的最后一个SQL语句。

我该如何解决?
我希望你的建议。

row2[]Float但您试图将它与String连接起来。 Python有一个严格的类型检查(没有隐式类型转换)。解决方案是将row2[index]更改为字符串。试试这个: -

cur.execute("select loc_name, mapY, mapX (6371 * acos(cos(radians("+str(row2[0])+ ") * cos(radians(mapY)) * cos(radians(mapX)- radians("+str(row2[1])+"))+ sin(radians("+str(row2[0])+")) * sin(radians(mapY)))) as distance FROM map_info HAVING distance < "+str(row2[2])) 
+1

谢谢。我非常感谢你的帮助。 – Kown

+0

乐意提供帮助。如果您对答案满意,请接受为解决方案。 –