renyupeng 6 月之前
父節點
當前提交
3331552e4c
共有 2 個文件被更改,包括 108 次插入1 次删除
  1. 93 0
      JST/KwaixiaodianJstPurchaseItemsRange_append.py
  2. 15 1
      utils/mysql_helper.py

+ 93 - 0
JST/KwaixiaodianJstPurchaseItemsRange_append.py

@@ -0,0 +1,93 @@
+# Author renyupeng
+# coding=utf-8
+# @Time    : 2024/11/27 13:24
+# @Site    : 
+# @File    : KwaixiaodianJstPurchaseItemsRange.py
+# @Software: PyCharm
+# @contact: renyupeng@c-top.com.cn
+# @Tel 1501435553
+import threading
+
+from utils.mysql_helper import batch_insertPro, batch_insertPro_jst
+from utils.mysql_utils_pro import MysqlProUtils
+
+
+class KwaixiaodianJstPurchaseItemsRange:
+    def __init__(self):
+        self.conn = MysqlProUtils()
+
+    def getSkuId(self):
+        sql = """
+            select sku_id from ruixuan.kwaixiaodian_jst_purchase_items 
+group by sku_id
+            """
+        results = self.conn.QueryAll(sql=sql)
+        items_per_thread = len(results)
+        threads = []
+        for i in range(5):
+            start = i * items_per_thread
+            end = start + items_per_thread
+            thread = threading.Thread(target=self.handlerSkuRange, args=(results[start:end],))
+            threads.append(thread)
+            thread.start()
+        for thread in threads:
+            thread.join()
+
+    def handlerSkuRange(self, sku_list):
+        for sku_id in sku_list:
+            sku_id = sku_id[0].decode("utf-8")
+            sku_range_delete = """
+            delete from ruixuan.kwaixiaodian_jst_purchase_items_range where sku_id='{sku_id}'
+            """.format(sku_id=sku_id)
+            self.conn.Operate(sku_range_delete)
+            sku_sql = """select sku_id,qty,price,po_date ,poi_id,po_id
+            from ruixuan.kwaixiaodian_jst_purchase_items
+                                  where sku_id='{sku_id}'
+                                        order by po_date """.format(sku_id=sku_id)
+            data_list = self.conn.QueryAll(sql=sku_sql)
+            sumqty = 0
+            end_qty = 0
+            sku_item_list = []
+            for i, data in enumerate(data_list):
+                if i == 0:
+                    start_qty = 0
+                    end_qty = data[1]
+                    qty = data[1]
+                    price = data[2]
+                    po_date = data[3].decode("utf-8")
+                    sumqty = data[1]
+                    poi_id = data[4]
+                    po_id = data[5]
+                    sku_num = i + 1
+                else:
+                    sku_id = data[0].decode("utf-8")
+                    qty = data[1]
+                    price = data[2]
+                    sumqty += data[1]
+                    po_date = data[3].decode("utf-8")
+                    poi_id = data[4]
+                    po_id = data[5]
+                    start_qty = end_qty + 1
+                    end_qty = sumqty
+                    sku_num = i + 1
+
+                # sku_item = {
+                #     "sku_id": sku_id,
+                #     "qty": qty,
+                #     "price": price,
+                #     "po_date": po_date,
+                #     "poi_id": poi_id,
+                #     "po_id": po_id,
+                #     "start_qty": start_qty,
+                #     "end_qty": end_pty,
+                #     "sku_num": i + 1
+                # }
+                sku_item=(
+                    poi_id, po_id, sku_id, qty, price, po_date, start_qty, end_qty, sku_num
+                )
+                sku_item_list.append(sku_item)
+            batch_insertPro_jst(sku_item_list, 'kwaixiaodian_jst_purchase_items_range')
+
+
+if __name__ == '__main__':
+    KwaixiaodianJstPurchaseItemsRange().getSkuId()

+ 15 - 1
utils/mysql_helper.py

@@ -67,7 +67,6 @@ def insertPro(item, table_name):
     insert_sql = "REPLACE INTO ruixuan.%s ( %s ) VALUES ( %s )" % (
         table_name, columns, placeholders)
     print(insert_sql)
-
     cur = con.cursor()
     try:
         cur.execute(insert_sql, async_item)
@@ -97,4 +96,19 @@ def batch_insertPro(item_list, table_name):
     except Exception as e:
         SendFeiShuMsg.send_robot_msg('{table_name}数据批量插入错误{e}'.format(table_name=table_name, e=e))
         con.rollback()
+    con.close()
+
+
+def batch_insertPro_jst(item_list, table_name):
+    con = pymysql.connect(host='139.186.27.96', user='data', passwd='hcst@2021', charset='utf8', port=3390)
+    # 对数据库进行插入操作,并不需要commit,twisted会自动commit
+    insert_sql = "REPLACE INTO ruixuan.{table_name}(poi_id, po_id,sku_id,qty, price,po_date,start_qty,end_qty,sku_num) VALUES ( %s,%s, %s, %s, %s, %s, %s, %s, %s )".format(table_name=table_name)
+    print(insert_sql)
+    cur = con.cursor()
+    try:
+        cur.executemany(insert_sql, item_list)
+        con.commit()
+    except Exception as e:
+        SendFeiShuMsg.send_robot_msg('{table_name}数据批量插入错误{e}'.format(table_name=table_name, e=e))
+        con.rollback()
     con.close()