feat: add get_last_quarter utils

main
jackluson 3 years ago
parent 8772188e64
commit 9bff5761c5

@ -11,14 +11,14 @@ Copyright (c) 2020 Camel Lu
import re
from time import sleep
from bs4 import BeautifulSoup
from utils.index import get_star_count, get_season_index
from utils.index import get_star_count, get_quarter_index, get_last_quarter_str
from selenium.common.exceptions import NoSuchElementException
class FundSpider:
# 初始化定义,利用基金代码、基金名称进行唯一化
def __init__(self, code, namecode, name, chrome_driver):
self.quarter_index = '2021-Q1'
self.quarter_index = get_last_quarter_str()
self.update_date = None # 数据更新时间,默认取资产配置更新时间
self.fund_code = code # 基金代码,需要初始化赋值
self.fund_name = name # 基金名称,需要初始化赋值
@ -313,5 +313,5 @@ class FundSpider:
return
self.update_date = update_date
split_dates = self.update_date.split('-', 1)
quarter_index = get_season_index(split_dates[1])
quarter_index = get_quarter_index(split_dates[1])
return split_dates[0] + '-Q' + str(quarter_index)

@ -14,7 +14,7 @@ import sys
from pprint import pprint
sys.path.append('../')
sys.path.append(os.getcwd() + '/src')
from utils.index import get_season_index
from utils.index import get_quarter_index
from sql_model.fund_query import FundQuery
@ -25,7 +25,7 @@ class FundStatistic:
# time.strftime("%m-%d", last_quarter_time)
year = time.strftime("%Y", last_quarter_time)
date = time.strftime("%m-%d", last_quarter_time)
index = get_season_index(date)
index = get_quarter_index(date)
quarter_index = year + '-Q' + str(index)
self.quarter_index = quarter_index
self.each_query = FundQuery()

@ -9,6 +9,7 @@ Copyright (c) 2021 Camel Lu
'''
import time
from threading import Lock
from utils.index import get_last_quarter_str
from db.connect import connect
@ -36,19 +37,20 @@ def format_sql(table_name, field_name, field_dict, prefix="AND"):
class FundQuery:
def __init__(self):
self.quarter_index = '2021-Q1'
self.quarter_index = get_last_quarter_str()
connect_instance = connect()
self.connect_instance = connect_instance
self.cursor = connect_instance.cursor()
self.lock = Lock()
# 需要爬取季度性信息的基金(B,C类基金除外因为B、C基金大部分信息与A类一致)
# 筛选出要更新的基金季度性信息的基金(B,C类基金除外因为B、C基金大部分信息与A类一致)的总数
def get_crawler_quarter_fund_total(self):
# 过滤没有股票持仓的基金
sql_count = "SELECT COUNT(1) FROM fund_morning_base as a \
WHERE a.fund_cat NOT LIKE '%%货币%%' \
AND a.fund_cat NOT LIKE '%%纯债基金%%' \
AND a.fund_cat NOT LIKE '目标日期' \
AND a.is_archive = 0 \
AND a.fund_name NOT LIKE '%%C' \
AND a.fund_name NOT LIKE '%%B' \
AND a.fund_cat NOT LIKE '%%短债基金%%' \
@ -58,7 +60,7 @@ class FundQuery:
count = self.cursor.fetchone()
return count[0]
# 筛选基金季度性信息的基金
# 筛选出要更新的基金季度性信息的基金
def select_quarter_fund(self, page_start, page_limit):
sql = "SELECT t.fund_code,\
t.morning_star_code, t.fund_name, t.fund_cat \
@ -67,6 +69,7 @@ class FundQuery:
AND t.fund_cat NOT LIKE '%%纯债基金%%' \
AND t.fund_cat NOT LIKE '目标日期' \
AND t.fund_cat NOT LIKE '%%短债基金%%' \
AND t.is_archive = 0 \
AND t.fund_name NOT LIKE '%%C' \
AND t.fund_name NOT LIKE '%%B' \
AND t.fund_code NOT IN( SELECT fund_code FROM fund_morning_quarter as b \

@ -45,7 +45,7 @@ def parse_csv(datafile):
return data
def get_season_index(input_date):
def get_quarter_index(input_date):
year = time.strftime("%Y", time.localtime())
boundary_date_list = ['03-31', '06-30', '09-30', '12-31']
@ -60,3 +60,12 @@ def get_season_index(input_date):
index = idx + 1
break
return index
def get_last_quarter_str():
last_quarter_time = time.localtime(time.time() - 3 * 30 * 24 * 3600)
year = time.strftime("%Y", last_quarter_time)
date = time.strftime("%m-%d", last_quarter_time)
index = get_quarter_index(date)
quarter_index_str = year + '-Q' + str(index)
return quarter_index_str

Loading…
Cancel
Save