简化商品插入数据表
This commit is contained in:
@@ -54,7 +54,7 @@ class GoodsInfo(BaseModel):
|
||||
other_data: dict = {} # 其他参数
|
||||
|
||||
def to_db_data(self):
|
||||
"""转为goods_info.add_goods()所需格式"""
|
||||
"""转为插入数据库所需格式"""
|
||||
|
||||
main_info = {
|
||||
'spu': self.spu,
|
||||
|
||||
@@ -90,7 +90,7 @@ def get_goods_info():
|
||||
|
||||
for goods_info in results:
|
||||
try:
|
||||
GoodsModel.add_goods(*goods_info.to_db_data())
|
||||
GoodsModel.add_goods(goods_info)
|
||||
for p_url in goods_info.p_urls:
|
||||
p_urls[p_url] = None
|
||||
except Exception as e:
|
||||
|
||||
@@ -72,14 +72,14 @@ class GoodsModel:
|
||||
'''
|
||||
self.Db.execute_script(table_sql)
|
||||
|
||||
def add_goods(self, main_info: dict, son_infos: list = []):
|
||||
def add_goods(self, goods_info: types.GoodsInfo):
|
||||
"""
|
||||
添加商品
|
||||
|
||||
:param main_info: 主表信息
|
||||
:param son_infos: 变体信息列表
|
||||
:param goods_info: GoodsInfo 类型数据
|
||||
|
||||
"""
|
||||
main_info, son_infos = goods_info.to_db_data()
|
||||
if main_info['attr'] == 'M' and len(son_infos) == 0:
|
||||
raise Exception(f"变体丢失 {main_info}")
|
||||
if len(main_info['images']) == 0:
|
||||
@@ -357,42 +357,42 @@ class GoodsModel:
|
||||
:param excel_path: 表格路径
|
||||
"""
|
||||
shopyy_data = excels.read_excel_to_dict(excel_path)
|
||||
for url, main_goods_info in shopyy_data.items():
|
||||
main_info = {
|
||||
'spu': main_goods_info.spu,
|
||||
'title': main_goods_info.title,
|
||||
'brand': main_goods_info.category_name,
|
||||
'attr': main_goods_info.attribute,
|
||||
'desc': main_goods_info.desc,
|
||||
'price': main_goods_info.price,
|
||||
'old_price': main_goods_info.old_price,
|
||||
'images': orjson.dumps(main_goods_info.images),
|
||||
'url': main_goods_info.url,
|
||||
'other_data': orjson.dumps({})
|
||||
}
|
||||
for index, item_name in enumerate(main_goods_info.attribute_items):
|
||||
if item_name:
|
||||
main_info[f"item{index+1}"] = item_name
|
||||
for url, goods_info in shopyy_data.items():
|
||||
# main_info = {
|
||||
# 'spu': main_goods_info.spu,
|
||||
# 'title': main_goods_info.title,
|
||||
# 'brand': main_goods_info.category_name,
|
||||
# 'attr': main_goods_info.attribute,
|
||||
# 'desc': main_goods_info.desc,
|
||||
# 'price': main_goods_info.price,
|
||||
# 'old_price': main_goods_info.old_price,
|
||||
# 'images': orjson.dumps(main_goods_info.images),
|
||||
# 'url': main_goods_info.url,
|
||||
# 'other_data': orjson.dumps({})
|
||||
# }
|
||||
# for index, item_name in enumerate(main_goods_info.attribute_items):
|
||||
# if item_name:
|
||||
# main_info[f"item{index+1}"] = item_name
|
||||
|
||||
son_infos = []
|
||||
for p_info in main_goods_info.p_lists:
|
||||
item = {
|
||||
'spu': p_info.spu,
|
||||
'price': p_info.price,
|
||||
'old_price': p_info.old_price,
|
||||
'images': orjson.dumps(p_info.images),
|
||||
'url': p_info.url,
|
||||
'other_data': orjson.dumps({}),
|
||||
'item1': None,
|
||||
'item2': None,
|
||||
'item3': None
|
||||
}
|
||||
for index, item_name in enumerate(p_info.attribute_items):
|
||||
if item_name:
|
||||
item[f"item{index+1}"] = item_name
|
||||
son_infos.append(item)
|
||||
# son_infos = []
|
||||
# for p_info in main_goods_info.p_lists:
|
||||
# item = {
|
||||
# 'spu': p_info.spu,
|
||||
# 'price': p_info.price,
|
||||
# 'old_price': p_info.old_price,
|
||||
# 'images': orjson.dumps(p_info.images),
|
||||
# 'url': p_info.url,
|
||||
# 'other_data': orjson.dumps({}),
|
||||
# 'item1': None,
|
||||
# 'item2': None,
|
||||
# 'item3': None
|
||||
# }
|
||||
# for index, item_name in enumerate(p_info.attribute_items):
|
||||
# if item_name:
|
||||
# item[f"item{index+1}"] = item_name
|
||||
# son_infos.append(item)
|
||||
|
||||
self.add_goods(main_info, son_infos)
|
||||
self.add_goods(goods_info)
|
||||
|
||||
def splice_db(self, db_folder: str):
|
||||
"""
|
||||
@@ -410,7 +410,7 @@ class GoodsModel:
|
||||
if goods_info.url in db_index:
|
||||
continue
|
||||
try:
|
||||
self.add_goods(*goods_info.to_db_data())
|
||||
self.add_goods(goods_info)
|
||||
except Exception as e:
|
||||
messages.sendError(f"{e} {goods_info.spu}")
|
||||
db_index[goods_info.url] = None
|
||||
|
||||
Reference in New Issue
Block a user