def _get_start_dates(sess, code, class_): """获取数据库指定代码所对应的表开始日期""" last_date = sess.query(func.max( class_.date)).filter(class_.code == code).scalar() if last_date is None: start = sess.query(Issue.A004_上市日期).filter(Issue.code == code).scalar() else: # 开始日期递延到下一天 start = last_date + timedelta(days=1) # 没有上市日期 if start is None: return None elif start > pd.Timestamp('today').date(): return None else: # 当存在开始日期时,移动到季度末 qe = QuarterEnd() start = qe.apply(start).date() if start > pd.Timestamp('today').date(): return None else: return start
import random import time from requests.exceptions import ConnectionError import akshare as ak import pandas as pd from pandas.tseries.offsets import QuarterEnd from pymongo.errors import DuplicateKeyError from ..mongodb import get_db from ..utils import make_logger logger = make_logger('巨潮财务报告预约披露') offset = QuarterEnd(n=-1, startingMonth=3, normalize=True) today = pd.Timestamp('today') END_DATE = offset.apply(today) START_DATE = pd.Timestamp('2006-12-31') DB_NAME = 'wy' COLLECTION_NAME = '预约披露' DATE_KEY = '实际披露' DATE_KEY_1 = '报告年度' # 降序排列 DATES = pd.date_range(START_DATE, END_DATE, freq='Q')[::-1] def _query_period(qd): if qd.quarter == 1: return f"{qd.year}一季" elif qd.quarter == 2: return f"{qd.year}半年报"