mongo database storage

 

mongo database, access to praise the data.

from app import mongo
from app.external.yz.goods_api import YzGoodsApi
from openpyxl import Workbook


class YzGoods:
    # 初始化
    def __init__(self):
        self.yz_api_goods = YzGoodsApi()
        self.collection = mongo.db.yz_goods_bx
        self.collection_tag = mongo.db.yz_tags_bx

    # 抓取商品信息存入mongo数据库
    def storage_mongo_goods(self):
        gooods_itemid_list = self.get_goodslist()

        for itemid in gooods_itemid_list:
            goods = self.collection.find_one({"_id": itemid})
            if goods:
                continue
            else:
                goods = self.yz_api_goods.get_goods(item_id=itemid)
                goods['_id'] = itemid
                self.collection.insert_one(goods)

    # 抓取商品类目存入mongo数据库
    def storage_mongo_tags(self):
        self.collection_tag.remove({})
        page_size = 10
        page_no = 1

        while True:
            get_tagid = self.yz_api_goods.get_Taglist(page_no=page_no, page_size=page_size)
            for item in get_tagid:
                self.collection_tag.insert_one(item)

            if len(get_tagid) < page_size:
                break
            else:
                page_no += 1

    def getgoods(self, item_id):
        goods = self.collection.find_one({"_id": item_id})

        if goods:
            return goods
        else:
            goods = self.yz_api_goods.get_goods(item_id=item_id)
            goods['_id'] = item_id
            self.collection.insert_one(goods)
        return goods

    # 获取商品id
    def get_goodslist(self):

        value_list = []
        page_size = 100
        page_no = 1

        while True:
            goods_list = self.yz_api_goods.get_goods_list(page_no=page_no, page_size=page_size, show_sold_out=2)
            keys = 'item_id'
            for out_dict in goods_list:
                tmp = out_dict[keys]
                value_list.append(tmp)

            if len(goods_list) < page_size:
                break
            else:
                print(page_no)
                page_no += 1

        return value_list

    # 获取商品详细信息
    def get_goods_id(self):
        goods_list = self.get_goodslist()
        value_list = []

        for item_id in goods_list:
            id = item_id
            goods = self.getgoods(item_id=id)
            keys = (
                'item_id', 'title', 'item_no', 'created', 'cid', 'tag_ids', 'quantity', 'sold_num',
                '. price ' 
            ) 
            # well understood that one, dictionary, list, the dictionary value or cycle removed. 
            tmp = {}
             for Keys in Keys: 
                tmp [ Keys ]  = Goods [ Keys ] 

            IF  ' SKUs '  in Goods and Goods [ ' SKUs' ] :
                 for SKU in Goods [ 'SKUs' ] : 
                    tmp [ ' item_id ' ]  = str(goods['item_id']) + '-' + str(sku['sku_id'])
                    value_list.append(tmp.copy())
            else:
                tmp['item_id'] = str(goods['item_id'])
                value_list.append(tmp.copy())

        return value_list

    def make_goods_excel(self):
        out_list = self.get_goods_id()

        # 创建excel工作簿
        wb =The Workbook () 

        # first excel_sheet1 
        WS = WB [ wb.sheetnames [0 ] ] 

        X =  2 
        Y =  . 1 

        # outer loop dictionary key, inner layer dictionary valuer cycle. Understand. 
        # Modifications. Think about a cycle. 
        for out_dict in out_list: 
            dict_keys = out_dict.keys () 
            out_dict [ "Tags" ]  = out_dict [ 'tag_ids' ]  IF  ' tag_ids '  in dict_keys the else out_dict[
                'tag_id'] if 'tag_id' in dict_keys else ""
            if 'tag_ids' in dict_keys:
                del out_dict['tag_ids']
            if "tag_id" in dict_keys:
                del out_dict['tag_id']

        for entry in out_list:
            for key, item in entry.items():
                value = item
                if Key  ==  ' Tags ' : 
                    value = " / ." the Join ( [ STR (T) for T in Item ] ) 

                ws.cell (Row = X, column = Y, value = value) 
                Y = Y +  . 1 
            X + =  . 1 
            Y =  . 1 

        WB. Save (R & lt ' C: \ the Users \ HBX \ Desktop \ work \ 201904 \ excitation traffic allocation \ product table 3.xlsx ' )

    def make_goods_id_excel(self):

        out_list = self.get_tagid()

        # 创建excel工作簿
        wb = Workbook()

        # 第一个excel_sheet1
        ws = wb[wb.sheetnames[0]]

        x = 2
        y = 1

        for out_dict in out_list:
            for item in out_dict:
                values = out_dict[item]

                ws.cell(row=x, column= Y, value = values ) 
                Y = Y +  . 1 

            X + =  . 1 
            Y =  . 1 

        WB. Save (R & lt ' C: \ the Users \ HBX \ Desktop \ work \ 201904 \ excitation traffic allocation \ product table 4.xlsx ' ) 


IF the __name__ ==  ' __main__ ' : 
    . YzGoods () storage_mongo_tags () 
    . YzGoods # () make_goods_id_excel () 
    # A =  . 1

 

Guess you like

Origin www.cnblogs.com/sakura3/p/11099783.html