Python进行mysql数据存储+powerbi可视化

Python进行mysql数据存储+powerbi可视化,第1张

本文章涉及mysql建表,Python读取并向mysql存储数据,powerbi度量值和可视化。

一、准备工作

需要先在mysql中创建所需要的表。

/*1.在dos窗口内 输入:  mysql -u root -p   */
/*2.然后回车,输入mysql登录密码。  */
/*3.进入到mysql内,查看现有数据库,输入:show databases;  */
/*4.进入到指定数据库内,输入: use 数据库名;  */
/*5.进到对应的数据库后,查看现有数据表,输入:show tables;   */
/*6.建表语句,创建基础数据表*/
create table `Basic data`
(`编号` int not null auto_increment,
`批次名称` varchar(50),
`模板名称` varchar(30),
`A` int,`B` int,`C` int,`D` int,`E` int,
`未接数` int,`占线数` int,
`总外呼数` int,`接通数` int,
`人工介入数` int,`通话时长/秒` float,
`人工介入时间/秒` float,`组织` varchar(6),
`场景名称` varchar(20),`日期` date,
primary key (`编号`));

        其他常用的SQL命令有:查看当前使用的数据库是哪个: select database(); ;查看mysql版本号:select version(); ;退出mysql:exit 。

二、使用Python连接数据库并存储数据

        涉及使用Python读取数据,对数据进行转化,连接数据库,构建相应的SQL语句并执行,关闭数据库的连接等5部分,可以分别写5个函数。

#导入相关的模块
import numpy as np 
import pandas as pd 
from pandas import DataFrame,Series
import re
import pymysql #连接mysql的模块


def main(): #定义主函数
    #path = str(input("请输入一个地址:"))#获取一个地址
    
    date1 = ['01.04','01.05','01.06']  #传入不同表格的定位参数
    
    #给定数据库相关参数
    host,user, password ,database = "localhost","root", "123456","数据库名称"

    #连接数据库
    conn,cursor = connect_database(host,user, password ,database)

    for i in date1: 
        path = 'D:/数据/日数据/2022年/'+ i + '日外呼.xls' #拼接文件路径
        data = []
        data = getdata(path) #通过getdat函数获取表格中的数据
        input_mysql(conn,cursor,data) #通过 input_mysql函数将数据插入数据库
        
    close_database(conn,cursor) #关闭数据库的连接

#获取表格的数据
def getdata(path):
    if len(path) !=0 : #input函数获取信息后的判断,后修改时未删除
        try: #错误信息收集
            data,data1 = [],[]
            #打开表格
            data1 = pd.read_excel(path,3)

            #对表格内的数据进行处理
            data = data1.iloc[:-1] #获取除最后一行的数据
            data = process_hs(data) #调用数据处理函数对数据进行处理
            #print(data.head(5))
            return data    #返回data数据
        except Exception as result:
            print(result)
    pass
 
#话术处理函数
def process_hs(data):
    ccmc = ['abc话术','abdec']
    ccmc1 = ['abc','abd']
    l = len(ccmc) #获取循环次数
    hs = data['模板名称'] #获得指定列数据
    hs1 = hs
    for i in hs.index:
        n = str(hs1[i])
        for m in range(0,l):
            ret = re.findall(".*" + ccmc[m]+ ".*",n) #正则表达式查找
            # display(n)
            if len(ret) > 0:
                hs1[i] = n.replace(ccmc[m],ccmc1[m])
                break
    hs1 = DataFrame(hs1)
    #display(hs1)
    data['模板名称'] = hs1
    data['组织'] = data['组织'].str.strip("小金部")
    return data

#连接数据库
def connect_database(host,user, password ,database):
    conn = pymysql.connect(host = host,user = user, password = password,database = database)
    cursor = conn.cursor()
    print("数据库连接成功")
    return (conn,cursor)


#数据插入数据库
def input_mysql(conn,cursor,data):
    
    #获取数据库表格行数
    sql1 = "select count(`编号`) from `basic data`"
    cursor.execute(sql1)
    num = cursor.fetchone()[0] + 1
    #display(num)
    if num == 0 :
            num = 1
    b = {} #定义一个空字典
    #对data内的数据进行转化

    num0 = len(data.index)
    b[0] = np.arange(num,num+num0,1)
    b[1] = data.iloc[:,1].values
    b[2] = data.iloc[:,2].values
    for i in range(3,15):
        b[i] = data.iloc[:,i].tolist()
    b[15] = data.iloc[:,17].values
    b[16] = data.iloc[:,18].values
    b[17] = data.iloc[:,0].tolist()

    #循环插入
    for i in range(0,num0):
        a = [ab[i] for ab in b.values()]  #将字典的值进行转化,方便后续可以取到每组的第一个值
        #display(a)
        #构建sql语句
        sql = "insert into `basic data` values ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s');"%(a[0],str(a[1]),a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15],a[16],a[17])
        
        #display(sql)
        cursor.execute(sql)
    conn.commit() #执行刚刚提交的事务
    print("数据插入成功") 
    pass
#关闭数据库
def close_database(conn,cursor):
    #conn,cursor = connect_database(self)
    cursor.close()
    conn.close()
    print("数据库连接已断开")

if __name__ == "__main__":   #当程序执行时
#调用函数
    main()
    print("运行完毕")

三、powerbi连接数据库并进行可视化

(1)powerBI进行数据库连接

需要输入数据库地址、数据库名、登录账号和密码,如果系统提示需要安装驱动,可以访问 MySQL :: Download Connector/NEThttps://dev.mysql.com/downloads/connector/net/  这个网址进行下载安装,之后再重新试一下。

(2)创建度量值,以接通率为例: 接通率 = DIVIDE(SUM('工作数据 basic data'[接通数]), SUM('工作数据 basic data'[总外呼数]))

(3)日数据可视化

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/737563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存