查询数据库生成json格式配置文件

import tkinter
import pymysql
from tkinter import END,filedialog
import json
class select_mysql():
    #mysql连接和查询
    def __init__(self,ip,prot,root,pwd):
        self.ip = ip
        self.root=root
        self.pwd=pwd
        self.prot=prot
        self.db = pymysql.connect(host=self.ip,port=self.prot,user=self.root,password=self.pwd,db="EERFG",charset="utf8")
        self.cursor = self.db.cursor()
    def whole_select_data(self):
        #查询生成json文件
        sql = "select unique,ip from t_vss_device_info where proty='20'"
        self.cursor.execute(sql)
        data = self.cursor.fetchall()
        st_data4=''
        for i in data:


            st_data = '"dev_id": "{}","dev_ip": "{}",'.format(i[0],i[1])
            print(st_data)
            sql = "select chame,unie from channel_info where uode like '%kl%'".replace('kl',i[0])
            #print(sql)
            self.cursor.execute(sql)
            data1 = self.cursor.fetchall()
            x1=""
            for d in data1:
              x='"dev_name": "{} {}","dev_identifier": "{}"'.format(i[1],d[0],d[1])
              x1+="{%s},"%x
              #print(x)
              #print(json.dumps(str("),ensure_ascii=False))
            st_data1='"list": [%s]'%x1[:-1]


            st_data2 = '{%s%s},'%(st_data,st_data1)
            st_data4+=st_data2


        st_data3 = '{"dev_list": [%s]}'%st_data4[:-1]
        fileName = filedialog.asksaveasfilename(defaultextension=".cfg",
                                                filetypes=[("CFG", ".cfg"), ("GPF", ".gpf"), ("JPG", ".jpg"),
                                                           ("DOCX", ".docx"), ("TXT", ".txt")])
        text = open(fileName,"w",encoding='utf-8')

        text.write(st_data3)
        text.close()
        text1 = open(fileName, "r+", encoding='utf-8').read()#json格式化笨方法
        text2=json.loads(text1)
        text3=json.dumps(text2,ensure_ascii=False,sort_keys=True,indent=4,separators=(',', ': '))
        text4 = open(fileName, "w+", encoding='utf-8')
        text4.write(text3)
        text4.close()

class basedesk():
    #初始见面
    def __init__(self,mask):
        self.tk = mask
        self.tk.title("配置文件生成器")
        self.tk.geometry("320x160")
        self.tk.resizable(0, 0)
        self.frame = tkinter.Frame(self.tk)
        self.frame.pack()
        tkinter.Label(self.frame,text="IP:").grid(row=0,column=1)
        self.t = tkinter.Text(self.frame,width=17,height=1)
        self.t.grid(row=0,column=2)
        self.t.insert(1.0,"localhost")
        tkinter.Label(self.frame,text="用户名:").grid(row=1,column=1)
        self.t1 = tkinter.Text(self.frame,width=17,height=1)
        self.t1.grid(row=1,column=2)
        self.t1.insert(1.0,"root")
        tkinter.Label(self.frame,text="密码:").grid(row=2,column=1)
        self.t2 = tkinter.Entry(self.frame,width=17,show='*')
        self.t2.grid(row=2,column=2)
        self.t2.insert(0,"*************")

        tkinter.Label(self.frame, text="端口:").grid(row=3, column=1)
        self.t3 = tkinter.Text(self.frame, width=17, height=1)
        self.t3.grid(row=3, column=2)
        self.t3.insert(1.0, 3306)

        b = tkinter.Button(self.frame,text="连接",width=10,height=1,command=self.link_1).grid(row=4,column=2)
    def link_1(self):
        ip = self.t.get(1.0,END).strip().encode("utf-8")
        user = self.t1.get(1.0,END).strip().encode("utf-8")
        pwd = self.t2.get().strip().encode("utf-8")
        prot = self.t3.get(1.0,END).strip().encode("utf-8")
        face1(self.tk,self.frame,ip,user,pwd,prot)
class face1():
    #二级界面
    def __init__(self,master,master1,ip,user,pwd,prot):
        self.master = master
        #print(ip,user,pwd)
        self.select_mysql=select_mysql(ip,int(prot),user,pwd,)
        master1.pack_forget()
        self.tk = tkinter.Frame(self.master)
        self.tk.pack()
        m_b = tkinter.Button(self.tk,text="一键生成配置文件",width=20,height=1,command=self.data).grid(row=0,column=0)
        m_b1 = tkinter.Button(self.tk, text="选择生成配置文件", width=20, height=1, command=self.data1).grid(row=1, column=0)
        self.t1 = tkinter.Label(self.tk, text="文件生成成功", fg='green')
        self.t2 = tkinter.Label(self.tk, text="文件生成失败", fg='red')

    def data(self):
        try:
            self.select_mysql.whole_select_data()
            self.t1.grid(row=2,column=0)
        except:
            self.t2.grid(row=2,column=0)
    def data1(self):
        self.tk.pack_forget()
        self.tk1 = tkinter.Frame(self.master)
        self.tk1.pack()
        m_b1 = tkinter.Button(self.tk1, text="返回", width=10, height=1, command=self.data2).grid(row=1, column=0)
    def data2(self):
        self.tk.pack()
        self.tk1.pack_forget()


if __name__ == "__main__":
    tk = tkinter.Tk()
    bd = basedesk(tk)
    tk.mainloop()

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值