Commit 066ef11b authored by rico.liu's avatar rico.liu

init code

parent d7763103
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Aug 25 11:07:18 2020
@author: rico
"""
import requests
def zgc_api(func,data):
headers = {
'Connection': 'Keep-Alive'
}
key = 'eRo1#ZFHY5N&GEzV'
api = f"http://59.110.219.171:8000/{func}/"
print(api)
data.update({'key':key})
session = requests.session()
result = session.post(api,json=data,headers=headers,timeout=600).json()
return result
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Sep 7 23:08:30 2020
@author: rico
"""
import pymssql
class MSSQL:
def __init__(self,host,db):
self.host = host
self.db = db
self._conn = self.GetConnect()
if(self._conn):
self._cur = self._conn.cursor()
#连接数据库
def GetConnect(self):
conn = False
if self.host == '123.57.45.119':
user = 'zgcprice'
pwd = 'zgcprice20200708'
elif self.host == '123.56.115.207':
user = 'zgcindex'
pwd = 'jiayou202006'
elif self.host == '10.0.120.131':
user = 'sa'
pwd = '1qaz@WSX'
elif self.host == '10.0.120.79':
user = 'sa'
pwd = '1qaz@WSX'
try:
conn = pymssql.connect(
host=self.host,
user=user,
password=pwd,
database =self.db,
autocommit=True
)
except Exception as err:
print("连接数据库失败, %s" % err)
else:
return conn
#获取连接信息
def GetConnectInfo(self):
print( "连接信息:" )
print( "服务器:%s , 用户名:%s , 数据库:%s " % (self.host,self.user,self.db))
def Close(self):
self._cur.close()
self._conn.close()
'''
ms = MSSQL('123.56.115.207','zdindex')
conn = ms._conn
cursor = ms._cur
cursor.execute(f"select top 10 * from zd_week_price")
cursor.fetchall()
ms.Close()
cursor.close()
conn.close()
'''
\ No newline at end of file
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Nov 13 11:42:04 2020
@author: rico
"""
import hashlib
from API import zgc_api
from db import MSSQL
import pandas as pd
from public_function import *
'''
#加载数据
def LoadData():
#创建数据库链接
mssql = MSSQL('123.57.45.119','ZI_Service')
cursor_zi_service = mssql._cur
cursor_zi_service.execute("select * from product_all where sku is Null")
df = pd.DataFrame(cursor_zi_service.fetchall(), columns=[tuple[0] for tuple in cursor_zi_service.description])
mssql.Close()
return df
'''
def hash_name(name):
m = hashlib.md5(name.encode("utf8"))
hasn_name = m.hexdigest()
return hasn_name
def get_pre_deal():
#创建数据库链接
mssql = MSSQL('123.57.45.119','ZI_Service')
cursor_zi_service = mssql._cur
cursor_zi_service.execute("select * from product_all where sku is Null")
df = pd.DataFrame(cursor_zi_service.fetchall(), columns=[tuple[0] for tuple in cursor_zi_service.description])
#创建数据库链接
mssql_new = MSSQL('123.56.115.207','ZI_NEW')
cursor_zi_new = mssql_new._cur
cursor_zi_new.execute("select * from p_brand where id not in (select pid from p_brand)")
brand_df = pd.DataFrame(cursor_zi_new.fetchall(), columns=[tuple[0] for tuple in cursor_zi_new.description]).fillna('无品牌信息')
cursor_zi_new.execute("select * from p_category where id not in (select pid from p_category)")
category_df = pd.DataFrame(cursor_zi_new.fetchall(), columns=[tuple[0] for tuple in cursor_zi_new.description])
#hash产品名称至SKU
df['sku'] = df['name'].apply(lambda x: hash_name(x))
name_list = df['name'].tolist()
#获取预测类别结果
data = {
"category_info": {
"cust_name_list": name_list,
"url_name_list":name_list
}
}
res = zgc_api("GetPredictCategory",data)
df['predict_cat'] = res['category_list']
df['predict_cat_code'] = res['categoryCode_list']
#实例化进度条
index_ = Index()
counter = 1
for index,row in df.iterrows():
id_ = row['id']
sku = row['sku']
name = row['name'].strip().upper()
print(index_(counter, len(df)-1), end='%')
counter += 1
pre_cat = row['predict_cat']
pre_cat_code = row['predict_cat_code']
zi_brandname = '未抽取到数据'
zi_brandcode = '未抽取到数据'
zi_categoryname = '未抽取到数据'
zi_categorycode = '未抽取到数据'
#抽取品牌
search_name = name.split(' ')[0]
for index_b,row_brand in brand_df.iterrows():
brandcode = row_brand['id']
brandname = row_brand['name']
cname = row_brand['cname']
ename = row_brand['ename'].upper()
if len(cname) == 1 or len(ename) == 1:
continue
if len(re.findall(r"[\u4e00-\u9fa5]", search_name)) == 0:
if ename in search_name:
zi_brandname = brandname
zi_brandcode = brandcode
break
else:
if cname in search_name:
zi_brandname = brandname
zi_brandcode = brandcode
break
#抽取类别
for index_c,row_cat in category_df.iterrows():
categorycode = row_cat['id']
categoryname = row_cat['name']
categoryname_list = row_cat['name'].split('/')
for category in categoryname_list:
if category in name:
zi_categoryname = categoryname
zi_categorycode = categorycode
break
if zi_categoryname == '未抽取到数据':
zi_categoryname = pre_cat
zi_categorycode = pre_cat_code
cursor_zi_service.execute(f"update product_all set zi_brandname = '{zi_brandname}',zi_brandcode = {zi_brandcode},\
zi_subcategoryname = '{zi_categoryname}',zi_subcategorycode = {zi_categorycode}, \
predict_category = '{pre_cat}',predict_category_code = {pre_cat_code},sku = '{sku}' where id = {id_}")
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Dec 18 11:11:31 2020
@author: rico
"""
from db import MSSQL
from API import zgc_api
import math
import pandas as pd
import numpy as np
from public_function import *
df = pd.read_excel("/Users/rico/project/中信银行/5000条/中信5000测试数据.xlsx",converters = {'供应商SKU':str})
supplier_list = df['供应商名称'].unique().tolist()
engine = 'SQL'
df_list = []
for supplier in supplier_list:
sup_df = df[df['供应商名称'] == supplier]
sku_list = sup_df['供应商SKU'].tolist()
#获取SKU匹配结果
data = {
"params_info": {
"channelAlias": f"{supplier}",
"cust_sku_list": sku_list,
"engine":f"{engine}"
}
}
res = zgc_api("GetSKUMatchResInfo",data)
if res['code'] == 0:
res_list = [False for i in range(len(sup_df))]
else:
res_list = [res['res_dict'][sku] for sku in sku_list]
sup_df['productcode'] = res_list
df_list.append(sup_df)
result_df = pd.concat(df_list)
result_df.to_excel("中信银行5000条.xlsx")
\ No newline at end of file
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Sep 16 14:27:52 2020
@author: rico
"""
import pandas as pd
from API import zgc_api
import pymssql
from public_function import *
df = pd.read_excel("/Users/rico/Downloads/京东重复链接(修正后链接).xls",sheet_name = "保留",converters = {'productcode':str})
sku_list = df['productcode'].tolist()
source_name_list = df['productname'].tolist()
price_list = df['参考价'].tolist()
url_list = df['goods_url'].tolist()
channelId_list = ['DS-JD' for i in range(len(df))]
#价格关系入库
data = {
"params_info": {
"sku_list": sku_list,
"url_name_list": source_name_list,
"url_price_list":price_list,
"url_list": url_list,
"channelId_list": channelId_list
}
}
res = zgc_api("Stock-InPriceInfo",data)
conn = pymssql.connect(host='123.56.115.207', user='zgcprice3311',password='zgcprice20200628',database= 'zdindex',autocommit=True)
cursor = conn.cursor()
cursor.execute(f"select id,goods_id from zd_electricity_price where mall_id ='DS-JD' and (periods = '20200917' or periods = '20200921') and goods_url is Null")
data = cursor.fetchall()
df = pd.DataFrame(data, columns=[tuple[0] for tuple in cursor.description])
index_ = Index()
counter = 1
for index,row in df.iterrows():
print(index_(counter, len(df)-1), end='%')
counter += 1
id_ = row['id']
code = row['goods_id']
cursor.execute(f"select goods_url from zd_electricity_price where goods_id = '{code}' and periods = '20200914' and mall_id = 'DS-JD'")
try:
url = cursor.fetchone()[0]
except:
continue
cursor.execute(f"update zd_electricity_price set goods_url = '{url}' where id = {id_}")
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Sep 14 10:11:38 2020
@author: rico
"""
import pymssql
import pandas as pd
from API import zgc_api
df = pd.read_excel("/Users/rico/project/路桥项目/JD数据/反馈-JD未匹配数据处理基本信息确认0909.xlsx",sheet_name = '建库')
conn_zi_lq = pymssql.connect(host='123.57.45.119', user='zgcprice', password='zgcprice20200708',database= f"SXLQ_JD",autocommit=True)
cursor_zi_lq = conn_zi_lq.cursor()
#新建品牌
newbrand_df = df[df['zi_brandcode'] == "空"][['id','zi_brandname']]
newbrand_list = newbrand_df['zi_brandname'].apply(lambda x : x.replace("新建品牌:","").strip()).unique().tolist()
data = {
"params_info": {
"brand_list": newbrand_list
}
}
res = zgc_api("Stock-InbrandInfo",data)
brand_dict = res['res_dict']
#更新product_all表
for index,row in newbrand_df.iterrows():
_id = row['id']
zi_brand_dict = brand_dict[row['zi_brandname'].replace("新建品牌:","").strip()]
zi_brand = [key for key in zi_brand_dict][0]
zi_brandcode = zi_brand_dict[zi_brand]
cursor_zi_lq.execute(f"update product_all set zi_brandname = '{zi_brand}',zi_brandcode = {zi_brandcode} where id = {_id}")
#入库
id_list = df['id'].tolist()
cust_sku_list = df['sku'].tolist()
channelAlias_list = df['channel_alias'].apply(lambda x:x.replace("SXLQ_","")).tolist()
source_name_list = df['name'].tolist()
price_list = df['price'].apply(lambda x:str(x)).tolist()
url_list = df['url'].tolist()
channelId_list = ["DS-JD" for i in range(len(df))]
brand_list = df['zi_brandname'].tolist()
brandId_list = df['zi_brandcode'].apply(lambda x:str(x)).tolist()
category_list = df['zi_subcategoryname'].tolist()
categoryId_list = df['zi_subcategorycode'].apply(lambda x:str(x)).tolist()
params_list = df['params'].apply(lambda x: eval(x)).tolist()
name_list = df['productname'].apply(lambda x: x.replace("'","''")).tolist()
'''
for params,category in zip(params_list,category_list):
cust_paramsAttr_list = [key for key in params]
data = {
"params_info": {
"category": category,
"cust_paramsAttr_list": cust_paramsAttr_list
}
}
res = zgc_api("GetZGCParamsInfo",data)
res['paramsAttr_dict']
'''
data = {
"params_info": {
"brand_list": brand_list,
"brandId_list": brandId_list,
"category_list": category_list,
"categoryId_list": categoryId_list,
"params_list": params_list,
"name_list": name_list
}
}
res = zgc_api("Stock-InProductInfo",data)
sku_list = res['sku_list']
#更新product_all表
for _id,sku in zip(id_list,sku_list):
cursor_zi_lq.execute(f"update product_all set productcode = '{sku}',remark = Null,state = '9' where id = {_id}")
#价格关系入库
data = {
"params_info": {
"sku_list": sku_list,
"url_name_list": source_name_list,
"url_price_list":price_list,
"url_list": url_list,
"channelId_list": channelId_list
}
}
res = zgc_api("Stock-InPriceInfo",data)
#对应关系入库
data = {
"params_info": {
"cust_sku_list": cust_sku_list,
"sku_list": sku_list,
"channelAlias_list": channelAlias_list
}
}
res = zgc_api("Stock-InSkuRelationshipInfo",data)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Aug 25 11:07:18 2020
@author: rico
"""
import requests
def zgc_api(func,data):
headers = {
'Connection': 'Keep-Alive'
}
key = 'eRo1#ZFHY5N&GEzV'
api = f"http://59.110.219.171:8000/{func}/"
print(api)
data.update({'key':key})
session = requests.session()
result = session.post(api,json=data,headers=headers,timeout=600).json()
return result
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Sep 7 23:08:30 2020
@author: rico
"""
import pymssql
class MSSQL:
def __init__(self,host,db):
self.host = host
self.db = db
self._conn = self.GetConnect()
if(self._conn):
self._cur = self._conn.cursor()
#连接数据库
def GetConnect(self):
conn = False
if self.host == '123.57.45.119':
user = 'zgcprice'
pwd = 'zgcprice20200708'
elif self.host == '123.56.115.207':
user = 'zgcindex'
pwd = 'jiayou202006'
elif self.host == '10.0.120.131':
user = 'sa'
pwd = '1qaz@WSX'
elif self.host == '10.0.120.79':
user = 'sa'
pwd = '1qaz@WSX'
try:
conn = pymssql.connect(
host=self.host,
user=user,
password=pwd,
database =self.db,
autocommit=True
)
except Exception as err:
print("连接数据库失败, %s" % err)
else:
return conn
#获取连接信息
def GetConnectInfo(self):
print( "连接信息:" )
print( "服务器:%s , 用户名:%s , 数据库:%s " % (self.host,self.user,self.db))
def Close(self):
self._cur.close()
self._conn.close()
'''
ms = MSSQL('123.56.115.207','zdindex')
conn = ms._conn
cursor = ms._cur
cursor.execute(f"select top 10 * from zd_week_price")
cursor.fetchall()
ms.Close()
cursor.close()
conn.close()
'''
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Dec 18 11:11:31 2020
@author: rico
"""
from db import MSSQL
from API import zgc_api
import math
import pandas as pd
import numpy as np
from public_function import *
df = pd.read_excel("/Users/rico/project/中信银行/5000条/中信5000测试数据.xlsx",converters = {'供应商SKU':str})
supplier_list = df['供应商名称'].unique().tolist()
engine = 'SQL'
df_list = []
for supplier in supplier_list:
sup_df = df[df['供应商名称'] == supplier]
sku_list = sup_df['供应商SKU'].tolist()
#获取SKU匹配结果
data = {
"params_info": {
"channelAlias": f"{supplier}",
"cust_sku_list": sku_list,
"engine":f"{engine}"
}
}
res = zgc_api("GetSKUMatchResInfo",data)
if res['code'] == 0:
res_list = [False for i in range(len(sup_df))]
else:
res_list = [res['res_dict'][sku] for sku in sku_list]
sup_df['productcode'] = res_list
df_list.append(sup_df)
result_df = pd.concat(df_list)
result_df.to_excel("中信银行5000条.xlsx")
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
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