当前位置: 首页 > wzjs >正文

廊坊企业网站外包筑博设计在深圳排名

廊坊企业网站外包,筑博设计在深圳排名,网站监测浏览器类型,wordpress .net源码该段代码主要实现从数据库和 Excel 文件中读取数据,并对两者进行字段匹配,最终找出 Excel 中未匹配到的数据库记录。功能如下: [sqlSelect()]:连接 MySQL 数据库并查询比价单及其商品信息。[BiJiaDaoChu()]:调用外部 …

该段代码主要实现从数据库和 Excel 文件中读取数据,并对两者进行字段匹配,最终找出 Excel 中未匹配到的数据库记录。功能如下:

  1. [sqlSelect()]:连接 MySQL 数据库并查询比价单及其商品信息。
  2. [BiJiaDaoChu()]:调用外部 API 导出 Excel 文件(注释中未被调用)。
  3. [read_excel_to_dict()]:将 Excel 文件读取为字典列表。
  4. [normalize_value()]:统一不同格式的值(如时间、空值、数字转字符串),便于后续比较。
  5. [match_list_to_list()]:根据字段映射匹配两个字典列表中的条目,允许时间差 2 秒。
  6. [find_unmatched_in_list_b()]:找出在 Excel 中没有匹配到的数据库记录。

最终输出:打印出数据库中在 Excel 中未找到匹配项的数据。

import jsonimport pandas as pd
import pymysql
import requests
import datetime
import numpy as np
from pymysql import Timestampdef sqlSelect():global result_skudb = pymysql.Connect(host='IP',port=3306,user='user',password='password',db='test',charset='utf8',cursorclass=pymysql.cursors.DictCursor)cur = db.cursor()sql = 'select * from aaa a join bbb b  on a.id=b.sheet_id where a.status in(1,2)'cur.execute(sql)result_sku = cur.fetchall()cur.close()db.close()# print(result_sku)return result_skudef BiJiaDaoChu():data = {"askSheetCode": None}headers = {"Authorization": "440d9854d7434d1f998081abc6785fab","Content-Type": "application/json"}url = 'http:test/export'response = requests.post(url=url, data=json.dumps(data), headers=headers)# 判断响应类型content_type = response.headers.get('Content-Type', '')if 'application/json' in content_type:try:print(response.json())  # 尝试解析 JSONexcept json.JSONDecodeError:print("无法解析 JSON 响应")elif 'application/octet-stream' in content_type or 'application/vnd.ms-excel' in content_type:with open("../data/exported_data_bijia_test.xls", "wb") as f:f.write(response.content)  # 保存 Excel 文件print("文件已保存为 exported_data_bijia_test.xls")else:print("未知响应类型:", content_type)print(response.text)def read_excel_to_dict(file_path):"""读取 Excel 文件并将数据以字典的形式返回。:param file_path: Excel 文件的路径:return: 包含数据的字典列表"""try:# 读取 Excel 文件df = pd.read_excel(file_path)# 将 DataFrame 转换为字典列表data = df.to_dict(orient='records')# print("Excel 数据读取成功", data)return dataexcept Exception as e:print(f"读取 Excel 文件时出错: {e}")return []def normalize_value(value):# 处理空值if value is None or (isinstance(value, float) and np.isnan(value)) or value == '':return None# 统一时间格式为 datetime.datetimeif isinstance(value, pd.Timestamp):return value.to_pydatetime()elif isinstance(value, datetime.datetime):return valueelif isinstance(value, datetime.date):return datetime.datetime.combine(value, datetime.time())# 统一数字类型为字符串if isinstance(value, (int, float)):return str(int(value)) if isinstance(value, float) else str(value)# 统一字符串类型:去除前后空格if isinstance(value, str):return value.strip()return valuedef match_list_to_list(list_a, list_b, field_mapping):"""比较两个字典列表,返回匹配成功的对。增加字段级调试打印 + 时间字段允许最多相差 2 秒。"""matched_pairs = []for a_item in list_a:for b_item in list_b:matched = Truefor key_a, key_b in field_mapping.items():val_a = normalize_value(a_item.get(key_a))val_b = normalize_value(b_item.get(key_b))# 如果都是时间类型,允许最多差 2 秒if isinstance(val_a, datetime.datetime) and isinstance(val_b, datetime.datetime):diff_seconds = abs((val_a - val_b).total_seconds())if diff_seconds <= 2:continue  # 允许匹配成功elif val_a != val_b:#print(f"[字段不匹配] {key_a}({val_a!r}) vs {key_b}({val_b!r})")matched = Falsebreakif matched:matched_pairs.append((a_item, b_item))#print("[匹配成功] 找到一对匹配项")break  # 可选:找到第一个就停止return matched_pairsdef find_unmatched_in_list_b(matched_pairs, list_b):# print("完整匹配对 matched_pairs:", matched_pairs)matched_keys = []for idx, (a_item, b_item) in enumerate(matched_pairs):# print(f"[{idx}] 提取 b.id: {b_item['b.id']}")  # 调试每条提取matched_keys.append(b_item['b.id'])# print("提取到的所有 b.id 列表:", matched_keys)unmatched_b_items = []for item in list_b:if item['b.id'] not in matched_keys:unmatched_b_items.append(item)return unmatched_b_itemsfile_path = "../data/exported_data_bijia_test.xls"
excel_data = read_excel_to_dict(file_path)
list_a = excel_data
list_b = sqlSelect()mapping = {'需求比价单号': 'sheet_sn', '业务分类': 'business_class', '报价开始时间': 'quotation_start_time','报价截止时间': 'quotation_end_time', '采购单位': 'purchase_unit', '联系人': 'lixiren', '联系方式': 'mobile','商品名称': 'goods_name', '品牌': 'pinpai', '计量单位': 'unit', '采购数量': 'number', '规格描述': 'specifications',
'技术标准': 'standard_code', '备注': 'remark', '其他信息': 'other_info'}matches = match_list_to_list(list_a, list_b, mapping)
# print("匹配结果:=========", matches)
# for a, b in matches:
#     print("匹配成功:")
#     print("  list_a 项:", a)
#     print("  list_b 项:", b)
# 查找未匹配的 list_b 数据
unmatched_b = find_unmatched_in_list_b(matches, list_a, list_b)# 打印出来
print("=== list_b 中未在 list_a 匹配到的数据 ===")
for item in unmatched_b:print(item)

文章转载自:

http://BDPNmW50.mbqyL.cn
http://VyteS7qt.mbqyL.cn
http://AiHoHS2t.mbqyL.cn
http://xpai4XcE.mbqyL.cn
http://zLTg2esC.mbqyL.cn
http://uR3u0lzn.mbqyL.cn
http://cZP5KGYS.mbqyL.cn
http://3UdgVrhO.mbqyL.cn
http://Dt5uVqBo.mbqyL.cn
http://IfrbKYav.mbqyL.cn
http://GV1JIJbN.mbqyL.cn
http://5ZqsYzHp.mbqyL.cn
http://f6WnCl39.mbqyL.cn
http://vHjP1WbQ.mbqyL.cn
http://zTP7smZT.mbqyL.cn
http://RGh98tcI.mbqyL.cn
http://XXfbZ3EJ.mbqyL.cn
http://SLrJjHxF.mbqyL.cn
http://7sgUQbOY.mbqyL.cn
http://20S2IxC7.mbqyL.cn
http://9pmAuenB.mbqyL.cn
http://p40UQBKT.mbqyL.cn
http://lwXeQBYX.mbqyL.cn
http://FPRQDri7.mbqyL.cn
http://lnB8SbYn.mbqyL.cn
http://jtqfdaL3.mbqyL.cn
http://B3QQYNtn.mbqyL.cn
http://30Z9LvnK.mbqyL.cn
http://yw7ICJ8V.mbqyL.cn
http://eyE7AoJQ.mbqyL.cn
http://www.dtcms.com/wzjs/643636.html

相关文章:

  • 做产地证网站免费网站建设浩森宇特
  • 购物网站建设价格如何建购物网站
  • 杭州网站建设是什么网站建设中的html页面下载
  • 无锡 网站建设长沙优化官网收费标准
  • 网上免费个人网站潍坊信息网网站建设
  • 做网站怎样设置搜索引擎wordpress 载入很慢
  • 国外素材设计欣赏网站html前端网站开发
  • 自建购物网站多少钱wordpress 没有 sql
  • 手机app游戏制作软件珠海seo快速排名
  • 西宁网站推广网页顶部导航栏设计
  • 网站建设合同标的网络营销策划的流程及要点
  • 彩票网站定制宽带费用多少钱一年
  • 国外做足球数据的网站有哪些北京网站建设方案排名
  • 北京做网站公司的排名摄影网站设计图片
  • 自己做的网站怎么发布到网上wordpress 如何制作模板
  • ps 做网站切图hois.skxy.wordpress
  • 医药网站源代码某网站seo诊断分析和优化方案
  • 黑色个人网站欣赏常平网站
  • 学校网站建设软件推荐广州网页设计培训教程
  • 网站建设报价表表格下载东南网
  • 网站建设的系统简介wordpress ality 预览
  • 微信知彼网络网站建设找人做网站要密码吗
  • 玉环做网站找那家公司美管加登录平台
  • 网站续费公司韩版做哪个网站好
  • 西安网站设计西安搜推宝安卓软件开发用什么语言
  • 在越南做网站都是什么人广告发布合同模板
  • 肥城网站设计公司最专业的手机网站制作
  • 甘肃建设厅执业资格注册中心网站手机软件开发培训
  • 建站之星导出网站公司建设网站申请报告
  • 佛山做网站优化公司做网站是先做界面还是先做后台