Administrator
2023-07-28 e21e7670bf906489b44fb4fe83148be0a43a0d2a
third_data/kpl_data_manager.py
@@ -14,8 +14,6 @@
from third_data.kpl_util import KPLPlatManager, KPLDataType
class KPLCodeLimitUpReasonManager:
    __redisManager = redis_manager.RedisManager(3)
@@ -158,16 +156,21 @@
        for b in constant.KPL_INVALID_BLOCKS:
            wheres.append(f"hb.`_hot_block_name` != '{b}'")
        wheres = " and ".join(wheres)
        sql = f"SELECT GROUP_CONCAT(_hot_block_name) FROM (SELECT hb.`_hot_block_name`,hb.`_day` FROM `kpl_limit_up_record` hb WHERE hb.`_code`='{code}' AND {wheres} ORDER BY hb.`_day` DESC LIMIT 10) a  GROUP BY a._day ORDER BY a._day DESC LIMIT 1"
        sql = f"SELECT GROUP_CONCAT(_hot_block_name) FROM (SELECT hb.`_hot_block_name`,hb.`_day` FROM `kpl_limit_up_record` hb WHERE hb.`_code`='{code}' AND {wheres} ORDER BY hb.`_day` DESC LIMIT 2) a  GROUP BY a._day ORDER BY a._day DESC LIMIT 1"
        print(sql)
        mysqldb = mysql_data.Mysqldb()
        return mysqldb.select_one(sql)
    # 获取代码最近的板块,返回[(板块,日期)]
    @classmethod
    def get_latest_infos(cls, code, count, contains_today=True):
        wheres = []
        for b in constant.KPL_INVALID_BLOCKS:
            wheres.append(f"hb.`_hot_block_name` != '{b}'")
        wheres = " and ".join(wheres)
        # 只获取最近180天的数据
        min_day = tool.date_sub(tool.get_now_date_str(), 180)
        sql = f"SELECT GROUP_CONCAT(_hot_block_name),`_day`,_blocks FROM (SELECT hb.`_hot_block_name`,hb.`_day`,hb._blocks FROM `kpl_limit_up_record` hb WHERE hb.`_code`='{code}' and hb.`_day` > '{min_day}' ORDER BY hb.`_day` DESC LIMIT 10) a  GROUP BY a._day ORDER BY a._day DESC LIMIT {count}"
        sql = f"SELECT GROUP_CONCAT(_hot_block_name),`_day`,_blocks FROM (SELECT hb.`_hot_block_name`,hb.`_day`,hb._blocks FROM `kpl_limit_up_record` hb WHERE hb.`_code`='{code}' and {wheres} and hb.`_day` > '{min_day}' ORDER BY hb.`_day` DESC LIMIT 10) a  GROUP BY a._day ORDER BY a._day DESC LIMIT {count}"
        mysqldb = mysql_data.Mysqldb()
        results = mysqldb.select_all(sql)
        if results and not contains_today and results[0][1] == tool.get_now_date_str():
@@ -176,7 +179,7 @@
    @classmethod
    def get_latest_blocks_set(cls, code):
        results = cls.get_latest_infos(code, 10, False)
        results = cls.get_latest_infos(code, 2, False)
        bs = set([b[0] for b in results])
        return bs
@@ -297,8 +300,6 @@
    yesterday_codes = set([x[0] for x in yesterday_limit_up_data_records])
    return yesterday_codes
if __name__ == "__main__":
    fresults = get_current_limit_up_data_records(2)
    for d in fresults:
        print(d)
    get_current_limit_up_data_records(2)
    print(KPLLimitUpDataRecordManager.get_latest_blocks_set("002671"))