Ejemplo n.º 1
0
def collect_stock_info():
    ebest = EBest("DEMO")
    mongodb = MongoDBHandler()
    ebest.login()

    code_list = mongodb.find_item({}, "stocklab_ace", "code_info")
    target_code = set([item["단축코드"] for item in code_list])
    today = datetime.today().strftime("%Y%m%d")
    print(today)

    collect_list = mongodb.find_item({"날짜": today}, "stocklab_ace", "price_info") \
        .distinct("code")
    for col in collect_list:
        target_code.remove(col)

    for code in target_code:
        time.sleep(1)
        print("code:", code)
        """
        result_price = ebest.get_stock_price_by_code(code, "1")
        if len(result_price) > 0:
            print(result_price)
            mongodb.insert_item_many(result_price, "stocklab_ace", "price_info")
        
        
        result_credit = ebest.get_credit_trend_by_code(code, today)
        if len(result_credit) > 0:
            mongodb.insert_item_many(result_credit, "stocklab_ace", "credit_info")
        """
        result_short = ebest.get_short_trend_by_code(code,
                                                     sdate=today, edate=today)
        if len(result_short) > 0:
            mongodb.insert_item_many(result_short, "stocklab_ace", "short_info")

        result_agent = ebest.get_agent_trend_by_code(code,
                                                     fromdt=today, todt=today)
        if len(result_agent) > 0:
            mongodb.insert_item_many(result_agent, "stocklab_ace", "agent_info")
        #
        ebest.logout()
Ejemplo n.º 2
0
class MongoDBHandlerTestCase(unittest.TestCase):
    def setUp(self):
        self.mongodb = MongoDBHandler()
        self.mongodb._client["stocklab_test"]["corp_info"].drop()
        docs = [{
            "item": "SamSung SDS",
            "related": "SamSung",
            "qty": 25,
            "tags": ["blank", "red"],
            "account": [14, 21]
        }, {
            "item": "LG CNS",
            "related": "LG",
            "qty": 50,
            "tags": ["red", "blank"],
            "account": [14, 21]
        }, {
            "item": "SK Telecom",
            "related": "SK",
            "qty": 100,
            "tags": ["red", "blank", "plain"],
            "account": [14, 21]
        }, {
            "item": "HYUNDAI MOBIS",
            "related": "HYUNDAI",
            "qty": 75,
            "tags": ["blank", "red"],
            "account": [22.85, 30]
        }, {
            "item": "SamSung SDI",
            "related": "SamSung",
            "qty": 25,
            "tags": ["blank", "red"],
            "account": [14, 21]
        }, {
            "item": "LG Telecom",
            "related": "LG",
            "qty": 50,
            "tags": ["red", "blank"],
            "account": [14, 21]
        }, {
            "item": "SK Innovation",
            "related": "SK",
            "qty": 50,
            "tags": ["red", "blank"],
            "account": [14, 21]
        }]
        self.mongodb._client["stocklab_test"]["corp_info"].insert_many(docs)

    def test_insert_item(self):
        print(inspect.stack()[0][3])
        doc = {
            "item": "SamSung Card",
            "related": "SamSung",
            "qty": 25,
            "tags": ["green", "red"],
            "account": [10, 11]
        }
        _id = self.mongodb.insert_item(doc, "stocklab_test", "corp_info")
        assert _id
        print(_id)

    def test_insert_items(self):
        print(inspect.stack()[0][3])
        docs = [{
            "item": "LG",
            "related": "LG",
            "qty": 25,
            "tags": ["red"],
            "account": [10, 11]
        }, {
            "item": "LG 화학",
            "related": "LG",
            "qty": 25,
            "tags": ["green", "red"],
            "account": [10, 11]
        }]
        ids = self.mongodb.insert_items(docs, "stocklab_test", "corp_info")
        assert ids
        print(ids)

    def test_find_item(self):
        print(inspect.stack()[0][3])
        doc = self.mongodb.find_item({"related": "LG"}, "stocklab_test",
                                     "corp_info")
        pprint(doc)

    def test_find_items(self):
        print(inspect.stack()[0][3])
        cursor = self.mongodb.find_items({"tags.1": "red"}, "stocklab_test",
                                         "corp_info")
        assert cursor
        for doc in cursor:
            pprint(doc)

    def test_delete_items(self):
        print(inspect.stack()[0][3])
        result = self.mongodb.delete_items({"related": "SamSung"},
                                           "stocklab_test", "corp_info")
        assert result
        print(result.deleted_count)

    def test_update_items(self):
        print(inspect.stack()[0][3])
        result = self.mongodb.update_items({"item": "LG Telecom"},
                                           {"$set": {
                                               "qty": 300
                                           }}, "stocklab_test", "corp_info")
        assert result
        print("matched_count:" + str(result.matched_count))
        print("modified_count:" + str(result.modified_count))

    def test_aggregate(self):
        print(inspect.stack()[0][3])
        pipeline = [{
            "$match": {
                "tags.1": "red"
            }
        }, {
            "$group": {
                "_id": "$related",
                "sum_val": {
                    "$sum": "$qty"
                }
            }
        }]
        result = self.mongodb.aggregate(pipeline, "stocklab_test", "corp_info")
        assert result
        for item in result:
            pprint(item)

    def test_text_search(self):
        print(inspect.stack()[0][3])
        index_result = self.mongodb._client["stocklab_test"][
            "corp_info"].create_index([('item', 'text'), ('related', 'text'),
                                       ('tags', 'text')])
        print(index_result)
        result = self.mongodb.text_search("blank", "stocklab_test",
                                          "corp_info")
        assert result
        for item in result:
            pprint(item)

    def tearDown(self):
        pass