Python改寫PHP刷類目映射腳本邏輯

来源:https://www.cnblogs.com/camg/archive/2022/07/19/16493999.html
-Advertisement-
Play Games

1、文件Auto_update_data,需要處理的映射基礎數據 #定義需要導入的映射數據 #以字典進行定義 [公司類目id : 平臺類目id] #d = {key1 : value1, key2 : value2, key3 : value3 } ap_category_relation_data ...


1、文件Auto_update_data,需要處理的映射基礎數據

#定義需要導入的映射數據
#以字典進行定義 [公司類目id : 平臺類目id]
#d = {key1 : value1, key2 : value2, key3 : value3 }
ap_category_relation_data = {
        5807 : 10002200,

        6375 : 10100737,

        6772 : 10100733,

        5816 : 1540,

        5832 : 1540,
}

2、文件Auto_update_db,自己封裝的資料庫操作

 

#資料庫操作
import pymysql

#資料庫類
class LazadaDb:
    def __init__(self, host, user, password, database, port):
        #打開資料庫連接
        db = pymysql.connect(
            host = host,
            user = user,
            password = password,
            database = database,
            port = port
        )
        #使用 cursor()方法創建一個游標對象 cursor
        self.db = db
        self.cursor = db.cursor()
    
    #定義一個查詢的方法 查一列
    def get(self, sql):
        try:
            cursor = self.cursor
            #執行SQL語句
            cursor.execute(sql)
            #使用 fetchone() 方法獲取單條數據
            data = cursor.fetchone()
            #返回數據
            return data
        except:
            return '獲取數據出錯101'
    
    def __del__(self):
        #析構函數 關閉資料庫連接
        self.db.close()

 

3、文件Auto_update_way,遞歸,獲取類目樹方法

#書寫公共方法
import Auto_update_db

#無限極往上獲取平臺類目樹信息
def platformCategoryVerify(platform_category_id):
    tree = []
    #獲取平臺資料庫類
    LazadaDb = Auto_update_db.LazadaDb('資料庫ip', 'test', '密碼', 'nt_auto_publish', 3311)
    #拼接查詢sql
    sql = "SELECT category_id,category_name,parent_id,level FROM ap_categories WHERE platform = 1 AND site_code = 'MY' AND category_id = " + str(platform_category_id)
    #獲取類目信息
    apCategories_info = LazadaDb.get(sql)
    #判斷類目是否存在
    if apCategories_info:
        #存在,通過父類id繼續獲取上級
        tree = platformCategoryVerify(apCategories_info[2])
        #將獲取到類目,添加到 定義的列表 tree 中
        tree.append(apCategories_info)
    return tree

#無限極往上獲取公司類目樹信息
def companyCategoryVerify(company_category_id):
    tree = []
    #獲取公司資料庫
    SysDb = Auto_update_db.LazadaDb('資料庫ip', 'test', '密碼', 'nt_product', 3307)
    #拼接查詢sql
    sql = "SELECT id, category_name, parent_id, level FROM nt_categories WHERE status = 1 AND ID = " + str(company_category_id)
    #獲取類目信息
    sysCategories_info = SysDb.get(sql)
    #p判斷類目是否存在
    if sysCategories_info:
        #存在,通過父類id繼續獲取上級
        tree = companyCategoryVerify(sysCategories_info[2])
        #將獲取到類目,添加到 定義的列表 tree 中
        tree.append(sysCategories_info)
    return tree

4、文件Auto_update_attr,最後組裝數據

#刷自動化類目
import Auto_update_data
import Auto_update_way

#獲取需要處理的類目映射數據
list_data = Auto_update_data.ap_category_relation_data

#定義一個最終數據的列表
ap_category_relation_data = []

for i in list_data:
    print('處理=', list_data[i])
    
    #獲取平臺類目樹信息
    platform_tree_info = Auto_update_way.platformCategoryVerify(list_data[i])
    platform_tree = '->' . join([str(platform_tree_info[i][0]) for i in range(0, len(platform_tree_info))])
    platform_tree_name = '->' . join([str(platform_tree_info[i][1]) for i in range(0, len(platform_tree_info))])
    
    #獲取公司類目樹信息
    company_tree_info = Auto_update_way.companyCategoryVerify(i)
    company_tree = '->' . join([str(company_tree_info[i][0]) for i in range(0, len(company_tree_info))])
    company_tree_name = '->' . join([str(company_tree_info[i][1]) for i in range(0, len(company_tree_info))])

    value_dic = {
        'platform' : 1, 
        'site_code' : 'MY',
        
        'platform_category_id' : list_data[i], #平臺類目信息
        'platform_category_name' : platform_tree_info[1][1],
        'platform_tree' : platform_tree,
        'platform_tree_name' : platform_tree_name,

        'company_category_id' : i, #公司類目信息
        'company_category_name' : company_tree_info[1][1],
        'company_tree' : company_tree,
        'company_tree_name' : company_tree_name,
    }
    ap_category_relation_data.append(value_dic)


#得到最後映射好的數據
for i in ap_category_relation_data:
    print(i)
    print('======')

5、最後運行文件,列印輸出


-----END

影子是一個會撒謊的精靈,它在虛空中流浪和等待被髮現之間;在存在與不存在之間....
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 視頻鏈接(p1~p8): golang入門到項目實戰 [2022最新Go語言教程,沒有廢話,純乾貨!] 參考鏈接: 用vscode開發go的時候,安裝go包報錯:connectex: A connection attempt failed because the connected party di ...
  • 這裡只討論作反向代理時,當上游服務發生如介面超時、返回指定狀態碼等狀況時而導致nginx超時重試。 這裡使用的nginx版本為1.16.1,可通過nginx -V查看版本。 超時重試主要通過配置ngx_http_upstream_module和ngx_http_proxy_module模塊中欄位實現 ...
  • 前言 嗨嘍,大家好呀~這裡是愛看美女的茜茜吶 今天我們要採集的網站呢,它是一款國民級短視頻App。 在它那裡,瞭解真實的世界,認識有趣的人,也可以記錄真實而有趣的自己。 🛫 現在,話不多說,讓我們開始叭 ⛱ 本篇代碼提供者:青燈教育-巳月 知識點: 動態數據抓包 requests發送請求 json ...
  • 背景 每次通過 docker build 'xxx' 的時候,總是會去maven鏡像下載一大堆Jar包,平均每次build都要在3分鐘左右,效率非常低下,於是查閱了各種辦法試圖讓第一次構建的時候才下載jar包,後面的構建都能復用,類似於本地開發代碼會指定maven倉庫一樣 實現方案 使用 -Dmav ...
  • Day02 第二天主要瞭解的內容為軟體研發的流程,如何使用dos命令框去編譯和運行java程式,以及編寫第一個java程式(HelloWorld) 瞭解編碼格式,Java中的代碼註釋,java如何輸出內容,java中的數據類型以及數據類型的轉換 標識符和關鍵字以及保留字 軟體研發流程 需求調研 需求 ...
  • Intro 對於同樣的數值計算任務,使用numpy比直接編寫python代碼實現 優點: 代碼更簡潔: numpy直接以數組、矩陣為粒度計算並且支持大量的數學函數,而python需要用for迴圈從底層實現; 性能更高效: numpy的數組存儲效率和輸入輸出計算性能,比python使用list好很多, ...
  • 一、 序言 今天用Python來試試,對一個文件裡面的英文單詞數量進行快速統計,告別傳統計數方式。 目標文件 我也不知道多少個,瞎複製的~ 二、涉及知識點 文件讀寫 基礎語法 字元串分割 三、代碼實踐 首先我們創建一個Python文件 導入我們需要用到的模塊 import platform # 我給 ...
  • 前言 嗨嘍~大家好呀,這裡是魔王吶 在前一章:讓我們用python來採集數據看看找工作都要會什麼吧~ 我們講瞭如何採集zhaopin網站數據,現在~ 我們來把數據可視化,更好的查看在自己領域最需的技術是什麼~ 下麵,我們直接上代碼~ 代碼提供者:青燈教育-自游老師 代碼 import pandas ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...