0604
This commit is contained in:
parent
322f94d622
commit
01a02f5dcb
94
tingCheQuZuoBiao.py
Normal file
94
tingCheQuZuoBiao.py
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
import pymysql
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
|
||||||
|
# MySQL数据库配置
|
||||||
|
DB_CONFIG = {
|
||||||
|
'host': 'localhost',
|
||||||
|
'user': 'testDB',
|
||||||
|
'password': 'WxMKtsNG8BRmWxDX',
|
||||||
|
'database': 'testdb',
|
||||||
|
'charset': 'utf8mb4',
|
||||||
|
'cursorclass': pymysql.cursors.DictCursor
|
||||||
|
}
|
||||||
|
|
||||||
|
# 高德地图API配置
|
||||||
|
AMAP_KEY = "ed2d6b26be983e04db8248adfe01ad24"
|
||||||
|
|
||||||
|
def get_location(address):
|
||||||
|
"""通过高德地图API获取地址的经纬度"""
|
||||||
|
try:
|
||||||
|
url = f"https://restapi.amap.com/v3/geocode/geo?address={address}&key={AMAP_KEY}&city=南宁&output=json"
|
||||||
|
response = requests.get(url)
|
||||||
|
result = response.json()
|
||||||
|
|
||||||
|
if result['status'] == '1' and result['count'] != '0':
|
||||||
|
location = result['geocodes'][0]['location']
|
||||||
|
lng, lat = location.split(',')
|
||||||
|
return float(lng), float(lat)
|
||||||
|
else:
|
||||||
|
print(f"地址解析失败: {address}, 错误信息: {result['info']}")
|
||||||
|
return None, None
|
||||||
|
except Exception as e:
|
||||||
|
print(f"获取经纬度时发生错误: {str(e)}")
|
||||||
|
return None, None
|
||||||
|
|
||||||
|
def update_coordinates():
|
||||||
|
try:
|
||||||
|
print("正在连接数据库...")
|
||||||
|
conn = pymysql.connect(**DB_CONFIG)
|
||||||
|
cursor = conn.cursor()
|
||||||
|
print("数据库连接成功")
|
||||||
|
|
||||||
|
# 首先获取表结构信息
|
||||||
|
cursor.execute("DESCRIBE tingchequ")
|
||||||
|
columns = cursor.fetchall()
|
||||||
|
print("表结构:", [col['Field'] for col in columns])
|
||||||
|
|
||||||
|
# 从tingchequ表获取所有需要更新经纬度的记录
|
||||||
|
# 修改查询语句,使用正确的字段名
|
||||||
|
query = "SELECT * FROM tingchequ WHERE 经度 IS NULL OR 纬度 IS NULL"
|
||||||
|
cursor.execute(query)
|
||||||
|
records = cursor.fetchall()
|
||||||
|
|
||||||
|
# 修改获取地址的代码
|
||||||
|
for record in records:
|
||||||
|
address = record.get('站点地址') # 将 '地址' 改为 '站点地址'
|
||||||
|
if not address:
|
||||||
|
print(f"记录中没有地址信息:{record}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
print(f"正在处理地址: {address}")
|
||||||
|
lng, lat = get_location(address)
|
||||||
|
|
||||||
|
if lng is not None and lat is not None:
|
||||||
|
# 修改更新语句,使用正确的字段名
|
||||||
|
update_query = "UPDATE tingchequ SET 经度=%s, 纬度=%s WHERE 站点地址=%s" # 将 '地址' 改为 '站点地址'
|
||||||
|
cursor.execute(update_query, (lng, lat, address))
|
||||||
|
conn.commit()
|
||||||
|
print(f"更新成功: 地址={address}, 经度={lng}, 纬度={lat}")
|
||||||
|
else:
|
||||||
|
print(f"无法获取地址的经纬度: {address}")
|
||||||
|
|
||||||
|
print("所有记录处理完成")
|
||||||
|
|
||||||
|
except pymysql.Error as e:
|
||||||
|
error_msg = f"数据库错误: {str(e)}"
|
||||||
|
if "Can't connect to MySQL server" in str(e):
|
||||||
|
error_msg = "\n错误:MySQL服务未运行\n解决方案:\n1. 以管理员身份打开命令提示符\n2. 输入命令 'net start MySQL80' 启动服务"
|
||||||
|
elif e.args[0] == 2003:
|
||||||
|
error_msg += "\n解决方案:\n1. 检查MySQL服务是否启动\n2. 确认主机名是否正确"
|
||||||
|
elif e.args[0] == 1045:
|
||||||
|
error_msg += "\n解决方案:\n1. 验证用户名和密码是否正确"
|
||||||
|
elif e.args[0] == 1049:
|
||||||
|
error_msg += "\n解决方案:\n1. 确认数据库名称是否正确"
|
||||||
|
print(error_msg)
|
||||||
|
finally:
|
||||||
|
if 'cursor' in locals():
|
||||||
|
cursor.close()
|
||||||
|
if 'conn' in locals():
|
||||||
|
conn.close()
|
||||||
|
print("数据库连接已关闭")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
update_coordinates()
|
||||||
BIN
南宁市5000家物流公司名单.xlsx
Normal file
BIN
南宁市5000家物流公司名单.xlsx
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user