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()