wip: correct c class fund asset info

main
jackluson 3 years ago
parent 9a4b571222
commit a3042763ee

@ -0,0 +1,44 @@
'''
Desc: 纠正基金BC类的总资产
File: /fund_classify.py
File Created: Tuesday, 4th May 2021 12:39:10 pm
Author: luxuemin2108@gmail.com
-----
Copyright (c) 2021 Camel Lu
'''
from pprint import pprint
from db.connect import connect
from time import sleep
import os
from fund_info_api import FundApier
connect_instance = connect()
cursor = connect_instance.cursor()
if __name__ == '__main__':
page_start = 3000
page_limit = 10000
sql_query_a_class = "SELECT fund_code, SUBSTRING(fund_name, 1, CHAR_LENGTH(fund_name)-1) as name, fund_name FROM fund_morning_base WHERE fund_name LIKE '%%A' LIMIT %s, %s ;"
cursor.execute(sql_query_a_class, [page_start, page_limit]) # 执行sql语句
all_a_results = cursor.fetchall() # 获取查询的所有记录
for i in range(0, len(all_a_results)):
# pprint(result[1])
result = all_a_results[i]
sql_query_b_class = "SELECT fund_code, fund_name FROM fund_morning_base WHERE fund_name LIKE '" + \
result[1] + "C';"
# print('sql_query_b_class', sql_query_b_class)
cursor.execute(sql_query_b_class)
c_class_result = cursor.fetchone()
if c_class_result:
fund_code = c_class_result[0]
fund_name = c_class_result[1]
if '封闭' in fund_name:
pprint(c_class_result)
else:
each_fund = FundApier(fund_code)
each_fund.get_base_info()
total_asset = each_fund.total_asset
sql_update = "UPDATE fund_morning_quarter SET total_asset = %s WHERE fund_code = %s;"
cursor.execute(sql_update, [total_asset, fund_code])
connect_instance.commit()

@ -0,0 +1,112 @@
'''
Desc: 从基金平台api获取基金信息
File: /fund_info_api.py
File Created: Wednesday, 5th May 2021 4:17:44 pm
Author: luxuemin2108@gmail.com
-----
Copyright (c) 2021 Camel Lu
'''
import requests
import json
import time
import os
from pprint import pprint
from utils import write_json_data
class FundApier:
def __init__(self, code):
self.fund_code = code
self.cur_date = time.strftime("%Y-%m-%d", time.localtime(time.time()))
self.end_date = '2021-04-30'
self.total_asset = None
file_dir = os.getcwd() + '/output/json/' + self.cur_date + '/'
self.file_path = '{file_dir}{fund_code}-{end_date}-base.json'.format(
file_dir=file_dir,
fund_code=code,
end_date=self.end_date
)
# 基金信息--来源爱基金
def get_base_info(self):
if self.base_info_is_exist():
with open(self.file_path) as json_file:
my_data = json.load(json_file)
asset_str = my_data.get('asset')
self.total_asset = float(asset_str) if asset_str else None
else:
url = "http://fund.10jqka.com.cn/data/client/myfund/{0}".format(
self.fund_code)
res = requests.get(url) # 自动编码
time.sleep(1)
try:
if res.status_code == 200:
res_json = res.json()
if res_json.get('error').get('id') == 0:
base_info = res.json().get('data')[0]
end_date = base_info.get('enddate')
self.total_asset = base_info.get('asset')
filename = '{fund_code}{end_date}-base.json'.format(
fund_code=self.fund_code,
end_date='-' + end_date if end_date else ''
)
write_json_data(base_info, filename)
else:
pprint(res_json)
print('code:1', self.fund_code)
else:
pprint(res.raw)
print('code:2', self.fund_code)
raise('中断')
except:
pprint(res.raw)
print('code:3', self.fund_code)
raise('中断')
def get_base_info_hz(self):
if self.base_info_is_exist():
with open(self.file_path) as json_file:
my_data = json.load(json_file)
asset_str = my_data.get('asset')
self.total_asset = float(asset_str) if asset_str else None
else:
url = "http://fund.10jqka.com.cn/data/client/myfund/{0}".format(
self.fund_code)
res = requests.get(url) # 自动编码
time.sleep(1)
try:
if res.status_code == 200:
res_json = res.json()
if res_json.get('error').get('id') == 0:
base_info = res.json().get('data')[0]
end_date = base_info.get('enddate')
self.total_asset = base_info.get('asset')
filename = '{fund_code}{end_date}-base.json'.format(
fund_code=self.fund_code,
end_date='-' + end_date if end_date else ''
)
write_json_data(base_info, filename)
else:
pprint(res_json)
print('code:1', self.fund_code)
else:
pprint(res.raw)
print('code:2', self.fund_code)
raise('中断')
except:
pprint(res.raw)
print('code:3', self.fund_code)
raise('中断')
def base_info_is_exist(self):
return os.path.exists(self.file_path)
if __name__ == '__main__':
fund_api = FundApier('003834')
fund_api.get_base_info()

@ -175,3 +175,18 @@ def get_season_index(input_date):
index = idx + 1
break
return index
# 写文件
def write_json_data(data, filename, file_dir=None):
import json
if not file_dir:
cur_date = time.strftime("%Y-%m-%d", time.localtime(time.time()))
file_dir = os.getcwd() + '/output/json/' + cur_date + '/'
if not os.path.exists(file_dir):
os.makedirs(file_dir)
print("目录新建成功:%s" % file_dir)
with open(file_dir + filename, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
f.close()

Loading…
Cancel
Save