tfse-admin-api-v0.2/macro/db.py

197 lines
5.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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):
"""
根据id删除宏观报告
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