importrequestsimportjsonimportpymysql
ak='你的ak'
defmysql_():
conn= pymysql.connect(host='127.0.0.1', user='数据库账号', passwd='数据库密码', db='数据库',
port=3306, charset='utf8',
cursorclass=pymysql.cursors.DictCursor)
cur=conn.cursor()returnconn,curdefselectdiyu():
conn, cur=mysql_()
sql= "select id,complete from chengguo"cur.execute(sql)
diyus=cur.fetchall()returndiyusdefupdatediyu(diyu, adcode, id):
data=[]
data.append((diyu, adcode, id))
conn, cur=mysql_()
sql= "update chengguo set diyu = %s,adcode = %s where id = %s"cur.executemany(sql,data)
conn.commit()defupdatecode(adcode, id):
data=[]
data.append((adcode, id))
conn, cur=mysql_()
sql= "update chengguo set adcode = %s where id = %s"cur.executemany(sql,data)
conn.commit()defgetPosition(url):
res=requests.get(url)
json_data=json.loads(res.text)if json_data['status'] ==0:
lat= json_data['result']['location']['lat'] #纬度
lng = json_data['result']['location']['lng'] #经度
else:print("Error output!")return json_data['status']returnlat, lngdefgetlocation(lat, lng, id):
url= 'http://api.map.baidu.com/reverse_geocoding/v3/?ak='+ak+'&output=json&coordtype=wgs84ll&location='+str(lat)+','+str(lng)
result=requests.get(url)
url_text=result.content.decode()
text=json.loads(url_text)
address= text.get('result').get('addressComponent')
province= address.get('province')
city= address.get('city')
district= address.get('district')
adcode= address.get('adcode')if province ==city:
diyu= province +districtelse:
diyu= province + city +districttry:#updatediyu(diyu, adcode, id)
updatecode(adcode, id)print('更新成功',id,diyu,adcode)except:print('更新失败')if __name__ == "__main__":
diyus=selectdiyu()for diyu indiyus:
add= diyu['complete'].replace('等','').split(' ')[0]
add= add.split('、')[0].partition('项目负责人')[0]
add_url= 'http://api.map.baidu.com/geocoding/v3/?address={Address}&output=json&ak={Ak}'.format(Address=add,Ak=ak)try:
lat, lng=getPosition(add_url)
getlocation(lat, lng, diyu['id'])except:
add_url= 'http://api.map.baidu.com/geocoding/v3/?address={Address}&output=json&ak={Ak}'.format(Address='天津市'+add,Ak=ak)
lat, lng=getPosition(add_url)
getlocation(lat, lng, diyu['id'])