如何用python代码优雅地实现以下功能,从mysql数据库中查询表logistics_trajectory中所有的字段tracking_number值,循环查出tracking_number,在循环内把每一个tracking_number作为函数query_logistics_trajectory的参数,并执行这个函数query_logistics_trajectory,函数query_logistics_trajectory返回的结果示例如下 { "status": "0",/* status 0:正常查询 201:快递单号错误 203:快递公司不存在 204:快递公司识别失败 205:没有信息 207:该单号被限制,错误单号 */ "msg": "ok", "result": { "number": "780098068058", "type": "zto", "list": [{ "time": "2018-03-09 11:59:26", "status": "【石家庄市】快件已在【长安三部】 签收,签收人: 本人,感谢使用中通快递,期待再次为您服务!" }], "deliverystatus": "3" } } 把示例里面的list转成JSON,并赋值给字段logistics_trajectory,然后根据tracking_number和state = '1'条件去更新表logistics_trajectory中的字段logistics_trajectory,这个表中有以下字段acc_key,issuance_date,issuance_number,tracking_number,logistics_company_name 以上涉及的mysql数据库的库为py,表名:logistics_trajectory 数据库的IP:192.168.0.126,账号:root 密码:quc@2022@din
时间: 2023-07-19 17:43:14 浏览: 92
Ukf.zip_State trajectory_UKF_rfid_trajectory_ukf tracking
5星 · 资源好评率100%
下面是一个用 Python 连接 MySQL 数据库,并实现上述功能的代码示例:
```python
import json
import pymysql
# 连接 MySQL 数据库
conn = pymysql.connect(host='192.168.0.126',
user='root',
password='quc@2022@din',
database='py')
# 定义查询物流轨迹的函数
def query_logistics_trajectory(tracking_number):
# TODO: 调用快递查询 API 并返回结果
result = {'status': '0',
'msg': 'ok',
'result': {'number': tracking_number,
'type': 'zto',
'list': [{'time': '2018-03-09 11:59:26',
'status': '【石家庄市】快件已在【长安三部】 签收,签收人: 本人,感谢使用中通快递,期待再次为您服务!'}],
'deliverystatus': '3'}}
return result
# 查询表 logistics_trajectory 中的所有 tracking_number
with conn.cursor() as cursor:
sql = 'SELECT tracking_number FROM logistics_trajectory'
cursor.execute(sql)
results = cursor.fetchall()
# 遍历 tracking_number 并更新表 logistics_trajectory
with conn.cursor() as cursor:
for result in results:
tracking_number = result[0]
# 调用 query_logistics_trajectory 函数查询物流轨迹
logistics_trajectory = query_logistics_trajectory(tracking_number)
# 将 list 转换为 JSON 字符串
logistics_trajectory_json = json.dumps(logistics_trajectory['result']['list'])
# 更新表 logistics_trajectory 中的 logistics_trajectory 字段
sql = f"UPDATE logistics_trajectory SET logistics_trajectory='{logistics_trajectory_json}' WHERE tracking_number='{tracking_number}' AND state='1'"
cursor.execute(sql)
# 提交事务
conn.commit()
# 关闭数据库连接
conn.close()
```
需要注意的是,上述代码中的 `query_logistics_trajectory` 函数只是一个示例,需要根据具体的快递查询 API 进行实现。另外,由于涉及到更新数据库,建议在执行前先备份数据以防止误操作。
阅读全文