Commit f2096656 authored by LAPTOP-1TK31LNP\liang's avatar LAPTOP-1TK31LNP\liang

类别更新通用代码

parent f0f0dde2
...@@ -5,31 +5,57 @@ import pymssql ...@@ -5,31 +5,57 @@ import pymssql
# coding=utf-8 # coding=utf-8
#读取excel中的内容 #读取excel中的内容
df = pd.read_excel('处理后数据-扫描仪数据0407.xlsx', sheet_name = 2, converters={'产品名称':str, '类别名称':str, '产品品牌':str, '类别编码':str, '产品编码':str } )
def clean_excel(DATABASE):
#需要修改为1不用修改为0
index_row = 0
is_important_category = []
df_test = pd.read_excel('显示器产品类别分析0428.xlsx',sheet_name = 0,converters={'产品编码':str,'备注':str,'是否为重点类':str})
category_name = df_test['类别名称'].tolist()
conn = pymssql.connect(host='123.56.115.207', user='zgcprice3311',password='zgcprice20200628',database= DATABASE ,autocommit=True)
#创建游标
cursor = conn.cursor()
sql = ("SELECT category_name FROM important_category_service")
cursor.execute(sql)
important_category_tuple = cursor.fetchone()
important_category = ''.join(important_category_tuple)
for i in category_name:
if str(i) in important_category:
is_important_category.append('0')
index_row+=1
else:
is_important_category.append('1')
index_row+=1
df_test['是否需要手动修改'] = is_important_category
df_clean = df_test[df_test['备注'] == '1']
df_clean.to_excel(r'显示器产品类别分析0428_清洗后.xlsx', index = False)
return df_clean
#SKU命名 #SKU命名
def all_modify_SKU_name(product_name,category_name): def all_modify_SKU_name(product_name,category_name,product_category,DATABASE):
list_temp = []#需要输出的列表 list_temp = []#需要输出的列表
index_row = 0 index_row = 0
#从excel中获取两个列的数据,类型为list #从excel中获取两个列的数据,类型为list
product_name_list = df[product_name].tolist() product_name_list = df_clean[product_name].tolist()
category_name_list = df[category_name].tolist() category_name_list = df_clean[category_name].tolist()
product_category_list = df_clean[product_category].tolist()
import_category_list = df_clean["是否重点类"].tolist()
#替换产品名称中错误的类别 #替换产品名称中错误的类别
for i in product_name_list: for i in product_name_list:
temp = i.replace("扫描仪", category_name_list[index_row]) #重点类,需要生成新sku名字
if(temp == i): if import_category_list[index_row] == 1:
temp_1 = i.replace("扫描枪", category_name_list[index_row]) temp = i.replace(category_name_list[index_row], "")
list_temp.append(temp_1) temp_1 = temp.replace(product_category_list[index_row], "")
temp_final = temp_1+" "+category_name_list[index_row]
list_temp.append(temp_final)
#非重点类,sku名字已经修改正确
else: else:
list_temp.append(temp) list_temp.append(i)
#判断长度 print("Through the list")
if(index_row < len(product_name_list)-1):
index_row+=1
#遍历完列表
else: print("Through the list")
#检查替换后的列表 #检查替换后的列表
SKU_name = list_temp SKU_name = list_temp
print(SKU_name)
return SKU_name return SKU_name
#SPU命名 #SPU命名
...@@ -37,8 +63,8 @@ def all_modify_SPU_name(product_brand,category_name): ...@@ -37,8 +63,8 @@ def all_modify_SPU_name(product_brand,category_name):
list_temp = [] list_temp = []
index_row = 0 index_row = 0
#从excel中获取两个列的数据,类型为list #从excel中获取两个列的数据,类型为list
product_brand_list = df[product_brand].tolist() product_brand_list = df_clean[product_brand].tolist()
category_name_list = df[category_name].tolist() category_name_list = df_clean[category_name].tolist()
#合并两项成为SPU #合并两项成为SPU
for i in product_brand_list: for i in product_brand_list:
temp = product_brand_list[index_row] + ' ' + category_name_list[index_row] temp = product_brand_list[index_row] + ' ' + category_name_list[index_row]
...@@ -55,10 +81,10 @@ def all_match_SPU_name(DATABASE,TEST_DATABASE,SPU_name, CATEGORY_id, BRAND_id): ...@@ -55,10 +81,10 @@ def all_match_SPU_name(DATABASE,TEST_DATABASE,SPU_name, CATEGORY_id, BRAND_id):
# password 密码 # password 密码
# database 数据库名称 # database 数据库名称
#连接数据库 #连接数据库
conn = pymssql.connect(host='123.56.115.207', user='zgcprice3311',password='zgcprice20200628',database= TEST_DATABASE ,autocommit=True) conn = pymssql.connect(host='123.56.115.207', user='zgcprice3311',password='zgcprice20200628',database= DATABASE ,autocommit=True)
#创建游标 #创建游标
cursor_database = conn.cursor() cursor_database = conn.cursor()
conn_test = pymssql.connect(host='123.56.115.207', user='zgcprice3311',password='zgcprice20200628',database= TEST_DATABASE ,autocommit=True) conn_test = pymssql.connect(host='123.56.115.207', user='zgcprice3311',password='zgcprice20200628',database= DATABASE ,autocommit=True)
#创建游标 #创建游标
cursor_test = conn_test.cursor() cursor_test = conn_test.cursor()
#需要输出的列表 #需要输出的列表
...@@ -109,19 +135,19 @@ def all_match_SPU_name(DATABASE,TEST_DATABASE,SPU_name, CATEGORY_id, BRAND_id): ...@@ -109,19 +135,19 @@ def all_match_SPU_name(DATABASE,TEST_DATABASE,SPU_name, CATEGORY_id, BRAND_id):
def all_get_category_id (category_id): def all_get_category_id (category_id):
category_id_list = df[category_id].tolist() category_id_list = df_clean[category_id].tolist()
#print(category_id_list) #print(category_id_list)
return category_id_list return category_id_list
def all_get_brand_id (product_brand, DATABASE): def all_get_brand_id (product_brand, DATABASE):
product_brand_list = df[product_brand].tolist() product_brand_list = df_clean[product_brand].tolist()
list_brand_id_update = [] list_brand_id_update = []
conn = pymssql.connect(host='123.56.115.207', user='zgcprice3311',password='zgcprice20200628',database= DATABASE ,autocommit=True) conn = pymssql.connect(host='123.56.115.207', user='zgcprice3311',password='zgcprice20200628',database= DATABASE ,autocommit=True)
#创建游标 #创建游标
cursor_read = conn.cursor() cursor_read = conn.cursor()
for i in product_brand_list: for i in product_brand_list:
#print(i) #print(i).
sql = ("SELECT id FROM p_brand WHERE name = %s") sql = ("SELECT id FROM p_brand WHERE name = %s")
cursor_read.execute(sql,i) cursor_read.execute(sql,i)
brand_update_id_tuple = cursor_read.fetchone() brand_update_id_tuple = cursor_read.fetchone()
...@@ -149,8 +175,8 @@ def delete_data(SPU_name, DATABASE): ...@@ -149,8 +175,8 @@ def delete_data(SPU_name, DATABASE):
def get_sku(sku): def get_sku(sku):
sku_list = df[sku].tolist() sku_list = df_clean[sku].tolist()
print(sku_list) #print(sku_list)
return(sku_list) return(sku_list)
...@@ -160,14 +186,14 @@ def get_spu_id(spu, DATABASE): ...@@ -160,14 +186,14 @@ def get_spu_id(spu, DATABASE):
#创建游标 #创建游标
cursor_read = conn.cursor() cursor_read = conn.cursor()
for i in spu: for i in spu:
print(i) #print(i)
#print(i) #print(i)
sql = ("SELECT id FROM p_spu WHERE spu = %s") sql = ("SELECT id FROM p_spu WHERE spu = %s")
cursor_read.execute(sql,i) cursor_read.execute(sql,i)
temp = cursor_read.fetchone() temp = cursor_read.fetchone()
spu_id_list.append(temp[0]) spu_id_list.append(temp[0])
#判断产品ID是否存在 #判断产品ID是否存在
print(spu_id_list) #print(spu_id_list)
conn.close() conn.close()
return(spu_id_list) return(spu_id_list)
...@@ -205,18 +231,25 @@ def update_sku_data(DATABASE,SKU,SKU_name,SPU_ID): ...@@ -205,18 +231,25 @@ def update_sku_data(DATABASE,SKU,SKU_name,SPU_ID):
sku = '产品编码' sku = '产品编码'
product_brand = '产品品牌' product_brand = '产品品牌'
product_name = '产品名称' product_name = '产品名称'
product_category = '产品类别'
category_name = '类别名称' category_name = '类别名称'
category_id = '类别编码' category_id = '类别编码'
database = 'ZI_NEW' database = 'ZI_NEW_TEST'
test_database = 'ZI_NEW_TEST' test_database = 'ZI_NEW_TEST'
SKU_name = all_modify_SKU_name(product_name,category_name) #在跑之前只需改第243行得excel文件路径和第237行得库名
#df_clean = clean_excel(database)
df_excel = pd.read_excel('显示器产品类别分析0510.xlsx', sheet_name = 0, converters={'产品编码':str})
df_clean = df_excel[df_excel['备注'] == 1]
SKU_name = all_modify_SKU_name(product_name,category_name,product_category,database)
SPU_name = all_modify_SPU_name(product_brand,category_name) SPU_name = all_modify_SPU_name(product_brand,category_name)
CATEGORY_id = all_get_category_id (category_id) CATEGORY_id = all_get_category_id (category_id)
BRAND_id = all_get_brand_id (product_brand, database) BRAND_id = all_get_brand_id (product_brand, database)
SPU = all_match_SPU_name(database,database,SPU_name,CATEGORY_id,BRAND_id) SPU = all_match_SPU_name(database,database,SPU_name,CATEGORY_id,BRAND_id)
SKU = get_sku(sku) SKU = get_sku(sku)
SPU_ID = get_spu_id(SPU, database) SPU_ID = get_spu_id(SPU, database)
#print(SKU)
update_sku_data(database,SKU,SKU_name,SPU_ID) update_sku_data(database,SKU,SKU_name,SPU_ID)
#delete_data(SPU_name, test_database)删库内数据用的,少用 #delete_data(SPU_name, test_database)删库内数据用的,少用
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment