MySQL 및 Flask에서 Python 코드를 작동합니다.
사용자가 웹에서 위치 이름과 반경을 입력하면 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)
그러나 'TypeError : cannot concatenate'str 'and'float 'objects'는 반경 내 위치를 검색하는 마지막 SQL 문에서 발생합니다.
어떻게 고칠 수 있습니까?
당신의 조언에 감사드립니다.
row2[]
입니다 Float
하지만 당신은 그것을 연결하는 노력하고있다 String
. 파이썬에는 엄격한 유형 검사가 있습니다 (암시 적 유형 변환 없음). 해결책은 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]))
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다