栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

tkinter+pymysql实现gui数据库查询功能

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

tkinter+pymysql实现gui数据库查询功能

首先引用tkinter和pymysql库;

import tkinter
import pymysql

构造一个格式化时间戳的类

#遇到日期特殊处理
class ComplexEncoder(json.JSONEncoder):
    def default(self,obj):
        if isinstance(obj,datetime):
            return obj.strftime('%Y-%m-%d %H:%M:%S')
        elif isinstance(obj,date):
            return obj.strftime('%Y-%m-%d')
        else:
            return json.JSONEncoder.default(self,obj)

定义一个函数,实现sql查询的功能,使用entry和combobox获取用户的输入,使用open函数将查询结果导出并存储到D盘;

#定义查询函数
def interface_table_cx_sql():
    try:
        db = pymysql.connect(host=ip_down_menu.get(),port=int(port_down_menu.get()),user=user_down_menu.get(),password=pw_down_menu.get(),database=db_down_menu.get(), charset='utf8' )
        tkinter.messagebox.showinfo('消息框', '数据库连接成功', parent=win)
    except:
        tkinter.messagebox.showerror('消息框', 'error 数据库连接失败', parent=win)
    cursor = db.cursor()    #创建一个游标

    sql = "select * from " + interface_table_down_menu.get() 

    try:
    # 执行SQL语句
        cursor.execute(sql)
        results = cursor.fetchall()
        cols = cursor.description
        data = format_data(results,cols)
        cursor.close()
        db.close()
        data_json=json.dumps(data,cls=ComplexEncoder,indent=1,ensure_ascii=False)
        with open('D:/接口库全表查询结果.txt','w') as file:
            file.write(data_json)
        tkinter.messagebox.showinfo('消息框', '数据已导入D盘 接口库全表查询结果.txt', parent=win)
    except:
        tkinter.messagebox.showerror('消息框', '错误!!请检查输入信息', parent=win)

定义一个format_data函数将导出的数据格式化为json格式;

def format_data(results,cols):
    keys = []
    for column in cols:
        keys.append(column[0])
    key_number = len(keys)

    json_data = []
    for row in results:
        item = dict()
        for q in range(key_number):
            item[keys[q]] = row[q]
        json_data.append(item)

    return json_data

以下为主程序:

win = tkinter.Tk()
win.title(test')
# 设置窗口大小
winWidth = 800
winHeight = 600

# 获取屏幕分辨率
screenWidth = win.winfo_screenwidth()
screenHeight = win.winfo_screenheight()
 
x = int((screenWidth - winWidth) / 2)
y = int((screenHeight - winHeight) / 2)

# 设置窗口初始位置在屏幕居中
win.geometry("800x600")
# 设置窗口图标
win.iconbitmap("D:/ztshouhou for mysql/image/34.ico")
#p1 = PhotoImage(file = 'D:/project/34.jpg')
#win.iconphoto(False, '34.jpg') 
# 设置窗口宽高固定
win.resizable(0, 0)
#创建一个菜单项,类似于导航栏
menubar = Menu(win)
#提示1
tishi1 = Label(win,text = '数据库IP和端口号',font = 16)
tishi1.grid(row=0)
'''
下拉菜单
'''
down_menu_ip = tkinter.StringVar()    #创建变量,便于取值
down_menu_port = tkinter.StringVar()    #创建变量,便于取值
down_menu_user = tkinter.StringVar()    #创建变量,便于取值
down_menu_pw = tkinter.StringVar()    #创建变量,便于取值
down_menu_db = tkinter.StringVar()    #创建变量,便于取值
down_menu_table = tkinter.StringVar()    #创建变量,便于取值
down_menu_interface_table = tkinter.StringVar()    #创建变量,便于取值
 
ip_down_menu = ttk.Combobox(win, textvariable=down_menu_ip)     # #创建下拉菜单
ip_down_menu.grid(row=1,column=0)     # #将下拉菜单绑定到窗体
ip_file = open("D:/ztshouhou for mysql/ip.config",'r+')
for x in ip_file:
    ip_down_menu["value"] = x 
ip_file.close()
ip_down_menu.current(0)    # #设定下拉菜单的默认值为第1个,即********

port_down_menu = ttk.Combobox(win, textvariable=down_menu_port)     # #创建下拉菜单
port_down_menu.grid(row=2,column=0)     # #将下拉菜单绑定到窗体
port_file = open("D:/ztshouhou for mysql/port.config",'r+')
for x in port_file:
    port_down_menu["value"] = x 
port_file.close()
port_down_menu.current(0)    # #设定下拉菜单的默认值为第1个,即********

user_down_menu = ttk.Combobox(win, textvariable=down_menu_user)     # #创建下拉菜单
user_down_menu.grid(row=4,column=0)     # #将下拉菜单绑定到窗体
user_file = open("D:/ztshouhou for mysql/user.config",'r+')
for x in user_file:
    user_down_menu["value"] = x 
user_file.close()
user_down_menu.current(0)    # #设定下拉菜单的默认值为第1个,即********

pw_down_menu = ttk.Combobox(win, textvariable=down_menu_pw)     # #创建下拉菜单
pw_down_menu.grid(row=5,column=0)     # #将下拉菜单绑定到窗体
pw_down_menu["value"] = ('**********************','11111111')    # #给下拉菜单设定值
pw_down_menu.current(0)    # #设定下拉菜单的默认值为第1个,即********

db_down_menu = ttk.Combobox(win, textvariable=down_menu_db)     # #创建下拉菜单
db_down_menu.grid(row=7,column=0)     # #将下拉菜单绑定到窗体
db_file = open("D:/ztshouhou for mysql/db.config",'r+')
for x in db_file:
    db_down_menu["value"] = x 
db_file.close()
db_down_menu.current(0)    # #设定下拉菜单的默认值为第1个,即********

table_down_menu = ttk.Combobox(win, textvariable=down_menu_table)     # #创建下拉菜单
table_down_menu.grid(row=7,column=1)     # #将下拉菜单绑定到窗体
table_file = open("D:/ztshouhou for mysql/table.config",'r+')
for x in table_file:
    table_down_menu["value"] = x
table_file.close()
table_down_menu.current(0)    # #设定下拉菜单的默认值为第1个,即null

interface_table_down_menu = ttk.Combobox(win, textvariable=down_menu_interface_table)     # #创建下拉菜单
interface_table_down_menu.grid(row=7,column=2)     # #将下拉菜单绑定到窗体
interface_table_file = open("D:/ztshouhou for mysql/interface_table.config",'r+')
for x in interface_table_file:
    interface_table_down_menu["value"] = x
interface_table_file.close()
interface_table_down_menu.current(0)    # #设定下拉菜单的默认值为第1个,即null
'''









转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/308097.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号