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]))
谢谢。我非常感谢你的帮助。 – Kown
乐意提供帮助。如果您对答案满意,请接受为解决方案。 –