加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
周报小区数据入库.py 5.07 KB
一键复制 编辑 原始数据 按行查看 历史
Mr.T 提交于 2021-12-16 16:49 . 第一次提交
# -*- coding: utf-8 -*-
"""
Created on Mon Nov 2 16:50:47 2020
@author: Administrator
"""
from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy
import pandas as pd
import os
work_path = 'd:/_周报数据/输出文件/'
os.chdir(work_path)
all_files = os.listdir('./')
detail_files = [x for x in all_files if '入库' in x]
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:a123456@218.63.75.43:3306/zb?charset=utf8"
app.config["SQLALCHEMY_POOL_RECYCLE"] = 1800
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
app.config['SQLALCHEMY_COMMMIT_ON_TEARDOWN'] = True
# 建立数据库对象
db = SQLAlchemy(app)
#db = SQLAlchemy(app_ use_native_unicode='utf8')
title = ["网元",
"小区号",
"小区名称",
"区域",
"频段",
"区县",
"支局",
"上行流量GB",
"下行流量GB",
"总流量GB",
"忙时RRC最大连接用户数",
"下行PRB利用率",
"下行最大激活用户数",
"下行用户面时延",
"用户体验速率",
"开始时间",
"结束时间",
"key"]
new_files = [x for x in detail_files if '入库'and'小区' in x]
for file in new_files:
df_zte = pd.read_excel('./'+file, skiprows =5 ,header=None,names=title,encoding = 'gbk')
df_zte=df_zte.drop(0,axis=0,inplace=False)
df_zte.fillna(method='ffill',inplace=True)
# 建立数据库类,用来映射到数据库中的表。
class Dianli(db.Model):
#声明表名
__tablename__ = '周报小区数据'
#建立字段函数
key = db.Column(db.String(200),primary_key=True)
网元 = db.Column(db.Integer)
小区号 = db.Column(db.String(200))
小区名称 = db.Column(db.String(200))
区域 = db.Column(db.String(200))
频段 = db.Column(db.String(200))
区县 = db.Column(db.String(200))
支局 = db.Column(db.String(200))
上行流量GB = db.Column(db.Float)
下行流量GB = db.Column(db.Float)
总流量GB = db.Column(db.Float)
忙时RRC最大连接用户数 = db.Column(db.Float)
下行PRB利用率 = db.Column(db.Float)
下行最大激活用户数 = db.Column(db.Float)
下行用户面时延 = db.Column(db.Float)
用户体验速率 = db.Column(db.Float)
开始时间=db.Column(db.String(200))
结束时间=db.Column(db.String(200))
def __repr__(self):
return '<key :{} 网元 :{} 小区号 :{} 小区名称:{} 区域 :{} 区县:{} 支局 :{} 上行流量(GB):{} 下行流量(GB):{} 总流量(GB):{} 忙时RRC最大连接用户数:{} 下行PRB利用率:{} 下行最大激活用户数:{} 下行用户面时延:{} 用户体验速率:{} 开始时间:{} 结束时间:{}>'.format(self.key ,self.网元,self.小区名称,self.小区号,self.区域,self.频段,self.区县,self.支局,self.上行流量(GB),self.下行流量(GB) , self.总流量(GB) , self.忙时RRC最大连接用户数 , self.下行PRB利用率 , self.下行最大激活用户数 , self.下行用户面时延 , self.用户体验速率,self.开始时间,self.结束时间)
db.create_all()
# =============================================================================
# key_list = zte_day.query.with_entities(zte_day.primary_key).distinct().all()
# key_list = [x[0] for x in key_list]
# df_zte = df_zte[~df_zte['key'].isin(key_list)]
#
# =============================================================================
# =============================================================================
# 导入数据
# =============================================================================
traffic_data = [Dianli(
key=key,
网元=网元,
小区号=小区号,
小区名称=小区名称,
区域=区域,
频段=频段,
区县=区县,
支局=支局,
上行流量GB=上行流量GB,
下行流量GB=下行流量GB,
总流量GB=总流量GB,
忙时RRC最大连接用户数=忙时RRC最大连接用户数,
下行PRB利用率=下行PRB利用率,
下行最大激活用户数=下行最大激活用户数,
下行用户面时延=下行用户面时延,
用户体验速率=用户体验速率,
开始时间=开始时间,
结束时间=结束时间
)for key,网元,小区号,小区名称,区域,频段,区县,支局,上行流量GB,下行流量GB,总流量GB,忙时RRC最大连接用户数,下行PRB利用率,下行最大激活用户数,下行用户面时延,用户体验速率,开始时间,结束时间 in zip(
df_zte['key'],
df_zte['网元'],
df_zte['小区号'],
df_zte['小区名称'],
df_zte['区域'],
df_zte['频段'],
df_zte['区县'],
df_zte['支局'],
df_zte['上行流量GB'],
df_zte['下行流量GB'],
df_zte['总流量GB'],
df_zte['忙时RRC最大连接用户数'],
df_zte['下行PRB利用率'],
df_zte['下行最大激活用户数'],
df_zte['下行用户面时延'],
df_zte['用户体验速率'],
df_zte['开始时间'],
df_zte['结束时间']
)]
for item in traffic_data:
db.session.add(item)
db.session.commit()
db.session.close
os.remove(new_files[0])
print('周报小区数据入库成功')
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化