import re import pymongo from bson import ObjectId from gridfs import GridFS client = pymongo.MongoClient('mongodb://{}:{}@{}:{}'.format('root', 'sromitdTW569kC#M', '116.63.130.34', 27018)) def find_macroscopic_report_data(industry): """ 查询宏观报告数据 Parameters: industry: 行业名称 Returns: record: 报告数据 """ collection = client['宏观']['行业报告'] data = collection.find({"行业名称": industry}, {'_id': False}) record = list(data) return record def insert_macroscopic_report_data(insert_data): """ 插入宏观报告数据 Parameters: insert_data: 需要保存的数据 Returns: result: 保存结果 """ collection = client['宏观']['行业报告'] res = collection.insert_one(insert_data) info = res.acknowledged return info def update_macroscopic_report_data(industry, update_time, fid): """ 更新宏观报告数据id Parameters: industry: 行业分类 update_time: 上传日期 fid: 文件id Returns: result: 更新结果 """ collection = client['宏观']['行业报告'] res = collection.update_one({"行业名称": industry}, {"$set": {"报告fid": fid, "上传日期": update_time}}) info = res.raw_result['updatedExisting'] return info def upload_report(file_name, files): """ 根据名称保存该企业报告 Parameters: file_name: 文件名 files: pdf文件 Returns: result: 保存结果 """ try: database = '宏观' collection = '宏观报告PDF' fs = GridFS(client[database], collection) pdf_id = fs.put(data=files.read(), content_type='application/pdf', filename=file_name) return str(pdf_id) except Exception: return False def delete_macroscopic_pdf(fid): """ 根据id删除宏观报告 Parameters: fid: 评价ID Returns: record: 删除结果 """ database = '模型' collection = '宏观报告PDF' fs = GridFS(client[database], collection) fs.delete(ObjectId(fid)) def find_macroscopic_report_records(industry, time, skip, limit): """ 根据行业查询宏观报告 Parameters: industry: 行业名称 time: 上传日期 skip: 页码,默认从0开始 limit: 每页条数 Returns: record: 查询结果 """ collection = client['宏观']['行业报告'] skip = (skip - 1) * limit # 参数都不为空 if industry and time: find = {"行业名称": industry, "上传日期": re.compile(time)} data = collection.find(find, {'_id': False}).skip(skip).limit(limit) count = collection.find(find).count() record = list(data) result = { "total": count, "data": record } return result elif len(industry) == 0 and time: find = {"上传日期": re.compile(time)} data = collection.find(find, {'_id': False}).skip(skip).limit(limit) count = collection.find(find).count() record = list(data) result = { "total": count, "data": record } return result elif len(time) == 0 and industry: find = {"行业名称": industry} data = collection.find(find, {'_id': False}).skip(skip).limit(limit) count = collection.find(find).count() record = list(data) result = { "total": count, "data": record } return result else: data = collection.find({}, {'_id': False}).skip(skip).limit(limit) count = collection.find().count() record = list(data) result = { "total": count, "data": record } return result def upload_industry_macroscopic_data(req): """ 上传行业宏观数据 Parameters: req: 上传的数据 Returns: record: 上传结果 """ collection = client['宏观']['行业数据'] find = {"一级行业": req['一级行业'], "二级行业": req['二级行业'], "统计时间": req['统计时间'], "统计字段名称": req['统计字段名称']} res = collection.update_one(find, {"$set": req}, upsert=True) if res.raw_result['n'] == 1: return True else: return False def upload_overview_macroscopic_data(req): """ 上传总规模宏观数据 Parameters: req: 上传的数据 Returns: record: 上传结果 """ collection = client['宏观']['总规模数据'] find = {"行业名称": req['行业名称'], "统计时间": req['统计时间'], "统计字段名称": req['统计字段名称']} res = collection.update_one(find, {"$set": req}, upsert=True) if res.raw_result['n'] == 1: return True else: return False def update_industry_macroscopic_data(req): collection = client['宏观']['行业数据'] find = {"一级行业": req['一级行业'], "二级行业": req['二级行业'], "统计时间": req['统计时间'], "统计字段名称": req['统计字段名称']} res = collection.update_one(find, {"$set": req}) if res.raw_result['n'] == 1: return True else: return False def search_macroscopic_data(req, skip, limit): collection = client['宏观']['行业数据'] skip = (skip - 1) * limit data = collection.find(req, {'_id': False}).skip(skip).limit(limit) count = collection.find(req).count() record = list(data) result = { "total": count, "data": record } return result