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