tfse-etl-api-v0.2/DBInitial/demo.py

129 lines
4.8 KiB
Python

import time
import pymongo
HOST = "116.63.130.34"
PASS = "UTlC9cCoglD1cI1*"
USER = "root"
PORT = "27021"
mongo_client = pymongo.MongoClient('mongodb://{}:{}@{}:{}'.format(USER, PASS, HOST, PORT))
class CompanyData:
def __init__(self):
self.cid = None
self.name = None
self.industry_l1 = None
self.basic_info = {}
self.share_holders = []
self.main_members = []
self.balance_sheet = {}
self.profit_sheet = {}
self.income_sheet = {}
self.appendix_sheet = {}
self.fin_index = {}
self.cc_rating_result = {}
self.esg_rating_result = {}
self.update_time = {
"工商信息": None,
"财务信息": None,
"综信评价": None,
"ESG评价": None
}
def dict_to_save(self):
_dict_ = {
"企业ID": self.cid,
"企业名称": self.name,
"一级行业": self.industry_l1,
"工商信息": self.basic_info,
"股东信息": self.share_holders,
"主要成员": self.main_members,
"资产负债表": self.balance_sheet,
"利润表": self.profit_sheet,
"现金流量表": self.income_sheet,
"财务补充数据": self.appendix_sheet,
"财务指标": self.fin_index,
"综信评价结果": self.cc_rating_result,
"ESG评价结果": self.esg_rating_result,
"更新时间": {
"工商信息": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
"财务信息": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
"综信评价": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
"ESG评价": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
}
}
return _dict_
def all_data():
collection = mongo_client['应用端']['企业用户']
col_basic_info = mongo_client['企业数据']['基本工商信息']
col_fin_data = mongo_client['企业数据']['基本财务数据']
col_cc_result = mongo_client['综信评价数据']['评价结果']
col_esg_result = mongo_client['ESG评价数据']['评价结果']
records = list(collection.find({}, {'_id': False}))
###
for data in records:
company_data = CompanyData()
cid = data['企业ID']
basic_info = list(col_basic_info.find({"企业ID": cid}, {'_id': False}))
fin_info = list(col_fin_data.find({"企业ID": cid}, {'_id': False}).sort('报告期', -1).limit(1))
cc_result = list(col_cc_result.find({"企业ID": cid}, {'_id': False}))
esg_result = list(col_esg_result.find({"企业ID": cid}, {'_id': False}))
company_data.cid = cid
company_data.name = data['企业名称']
company_data.industry_l1 = data['一级行业']
if basic_info:
company_data.basic_info = basic_info[0]['工商信息']
company_data.share_holders = basic_info[0]['股东信息']
company_data.main_members = basic_info[0]['主要成员']
if fin_info:
company_data.balance_sheet = fin_info[0]['资产负债表']
company_data.profit_sheet = fin_info[0]['利润表']
company_data.income_sheet = {}
company_data.appendix_sheet = fin_info[0]['补充数据表']
company_data.fin_index = fin_info[0]['财务指标']
if cc_result:
company_data.cc_rating_result = {
"评价ID": cc_result[0]["评价ID"],
"信用等级": cc_result[0]['信用等级'],
"评价年度": cc_result[0]["评价年度"],
"信用评分": cc_result[0]['信用评分'],
"经营评分": cc_result[0]["经营评分"],
"财务评分": cc_result[0]["财务评分"],
"风险评分": cc_result[0]["风险评分"],
"评价时间": cc_result[0]["评价时间"],
}
if esg_result:
company_data.esg_rating_result = {
"评价ID": esg_result[0]["评价ID"],
"评价等级": esg_result[0]['评价等级'],
"评价年度": esg_result[0]["评价年度"],
"ESG得分": esg_result[0]['ESG得分'],
"环境得分": esg_result[0]["环境得分"],
"社会得分": esg_result[0]["社会得分"],
"公司治理得分": esg_result[0]["公司治理得分"],
"评价时间": esg_result[0]["评价时间"],
}
col = mongo_client['企业数据']['企业数据_更新汇总']
col.update_one({"企业ID": company_data.cid}, {"$set": company_data.dict_to_save()}, upsert=True)
###
if __name__ == '__main__':
all_data()