Python中tkinter+MySQL实现增删改查
更新时间:2021年4月9日 15:01 点击:2040
一、设置主窗口
# -*- coding: utf-8 -*- import tkinter from tkinter import ttk import pymysql # 导入消息对话框子模块 import tkinter.messagebox # 创建主窗口 root = tkinter.Tk() root.title('告警查询') # 设置窗口大小 root.minsize(500,500) tabControl = ttk.Notebook(root) tab1 = ttk.Frame(tabControl) # Create a tab tabControl.add(tab1, text='铁塔订单查询') # Add the tab tab2 = ttk.Frame(tabControl) # Add a second tab tabControl.add(tab2, text='告警详细查询') # Make second tab visible tab3 = ttk.Frame(tabControl) # Add a third tab tabControl.add(tab3, text='配置汇总表') # Make second tab visible tabControl.pack(expand=1, fill="both")
二、定义函数
1.定义增删改查函数
'''main3响应函数''' def select3(root, label,tree): sname = label.get() print('input: ',sname) # 1.由于刚才已经关闭了数据库连接,需要重新创建Connection对象和Cursor对象 con = pymysql.connect(host='192.168.0.46', user='root', password='root', database='test', charset='utf8', use_unicode=True) cursor=con.cursor() print("select * from 配置表汇总 where `站点名称(局向)` like '"+sname+"'") c = cursor.execute("select * from 配置表汇总 where `站点名称(局向)` like '"+sname+"'") # 2.查询结果保存到list_re list_re=cursor.fetchall() print('result: ', list_re) if len(list_re) <= 0: tkinter.messagebox.showinfo('提示',sname+'告警信息不存才!') else: print('result_name: ', list_re[0][0]) #数据成功提取出来了 # 3.向tree写入数据 for i in range(len(list_re)): tree.insert('', i, text=i ,values=(list_re[i][0], list_re[i][2],list_re[i][4], list_re[i][14],\ list_re[i][5], list_re[i][9],list_re[i][11], list_re[i][12],\ list_re[i][13])) tree.grid(column=0,row=1,sticky='NSEW') con.close() def insert(root, label1,label2,label3,label4,label5,label6,label7,label8,label9): net_name = label1.get() area_name = label2.get() base_name = label3.get() belong_name = label4.get() base_local = label5.get() base_level = label6.get() base_num = label7.get() rural = label8.get() scene = label9.get() print('input: ',net_name) # 由于刚才已经关闭了数据库连接,需要重新创建Connection对象和Cursor对象 con = pymysql.connect(host='192.168.0.46', user='root', password='root', database='test', charset='utf8', use_unicode=True) cursor=con.cursor() # SQL 插入语句 里面的数据类型要对应 sql = "INSERT INTO 配置表汇总(`网络类型`,\ `行政区`,`基站名称`,`归属区域`,`基站所处位置具体地址`,\ `基站分级`,`站点名称(局向)`,`是否农村基站`,`二级场景类型`)\ VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s')" % \ (net_name,area_name,base_name,belong_name,base_local,base_level,base_num,rural,scene) print(sql) try: # 执行sql语句 cursor.execute(sql) # 执行sql语句 con.commit() tkinter.messagebox.showinfo('提示',net_name+'配置汇总表插入成功!') except: # 发生错误时回滚 con.rollback() con.close() def delete(root,label7): base_num = label7.get() print('input: ',base_num) # 由于刚才已经关闭了数据库连接,需要重新创建Connection对象和Cursor对象 con = pymysql.connect(host='192.168.0.46', user='root', password='root', database='test', charset='utf8', use_unicode=True) cursor=con.cursor() # SQL 插入语句 里面的数据类型要对应 sql = "DELETE FROM 配置表汇总 WHERE `站点名称(局向)`='%s'" %(base_num) print(sql) try: # 执行sql语句 cursor.execute(sql) # 执行sql语句 con.commit() tkinter.messagebox.showinfo('提示',base_num+'配置汇总表删除成功!') except: # 发生错误时回滚 con.rollback() con.close()
2.定义主调用函数
def main3(): monty3 = ttk.LabelFrame(tab3, text='控件示范区3') monty3.grid(column=0, row=0,sticky='W', padx=8, pady=4) monty3_1 = ttk.LabelFrame(tab3, text='控件示范区2') monty3_1.grid(column=0, row=1,sticky='W', padx=4, pady=4) # 查询结果 tree=ttk.Treeview(monty3_1)#表格 tree["columns"]=("网络类型","行政区","基站名称","归属区域","基站所处位置具体地址",\ "基站分级","站点名称(局向)","是否农村基站","二级场景类型") tree.column("网络类型",width=50) #表示列,不显示 tree.column("行政区",width=50) tree.column("基站名称",width=50) tree.column("归属区域",width=50) #表示列,不显示 tree.column("基站所处位置具体地址",width=50) tree.column("基站分级",width=50) tree.column("站点名称(局向)",width=50) #表示列,不显示 tree.column("是否农村基站",width=50) tree.column("二级场景类型",width=50) tree.heading("网络类型",text="网络类型") #显示表头 tree.heading("行政区",text="行政区") tree.heading("基站名称",text="基站名称") tree.heading("归属区域",text="归属区域") #显示表头 tree.heading("基站所处位置具体地址",text="基站所处位置具体地址") tree.heading("基站分级",text="基站分级") tree.heading("站点名称(局向)",text="站点名称(局向)") #显示表头 tree.heading("是否农村基站",text="是否农村基站") tree.heading("二级场景类型",text="二级场景类型") tree.grid(column=0,row=1,sticky='NSEW') input_name1 = ttk.Label(monty3, text = '网络类型:').grid(column=0, row=0, sticky='W',pady=5) label1 = tkinter.StringVar() entry1 = tkinter.Entry(monty3,bg='#ffffff',width=20,textvariable=label1).grid(column=1, row=0, sticky='W') input_name2 = ttk.Label(monty3, text = '行政区:').grid(column=3, row=0, sticky='W') label2 = tkinter.StringVar() entry2 = tkinter.Entry(monty3,bg='#ffffff',width=20,textvariable=label2).grid(column=4, row=0, sticky='W') input_name3 = ttk.Label(monty3, text = '基站名称:').grid(column=0, row=1, sticky='W',pady=5) label3 = tkinter.StringVar() entry3 = tkinter.Entry(monty3,bg='#ffffff',width=20,textvariable=label3).grid(column=1, row=1, sticky='W') input_name4 = ttk.Label(monty3, text = '归属区域:').grid(column=3, row=1, sticky='W') label4 = tkinter.StringVar() entry4 = tkinter.Entry(monty3,bg='#ffffff',width=20,textvariable=label4).grid(column=4, row=1, sticky='W') input_name5 = ttk.Label(monty3, text = '基站所处位置具体地址:').grid(column=0, row=2, sticky='W',pady=5) label5 = tkinter.StringVar() entry5 = tkinter.Entry(monty3,bg='#ffffff',width=20,textvariable=label5).grid(column=1, row=2, sticky='W') input_name6 = ttk.Label(monty3, text = '基站分级:').grid(column=0, row=3, sticky='W',pady=5) label6 = tkinter.StringVar() entry6 = tkinter.Entry(monty3,bg='#ffffff',width=20,textvariable=label6).grid(column=1, row=3, sticky='W') input_name7 = ttk.Label(monty3, text = '站点名称(局向):').grid(column=0, row=4, sticky='W',pady=5) label7 = tkinter.StringVar() entry7 = tkinter.Entry(monty3,bg='#ffffff',width=20,textvariable=label7).grid(column=1, row=4, sticky='W') input_name8 = ttk.Label(monty3, text = '是否农村基站:').grid(column=0, row=5, sticky='W',pady=5) label8 = tkinter.StringVar() entry8 = tkinter.Entry(monty3,bg='#ffffff',width=20,textvariable=label8).grid(column=1, row=5, sticky='W') input_name9 = ttk.Label(monty3, text = '二级场景类型:').grid(column=0, row=6, sticky='W',pady=5) label9 = tkinter.StringVar() entry9 = tkinter.Entry(monty3,bg='#ffffff',width=20,textvariable=label9).grid(column=1, row=6, sticky='W') select_button = tkinter.Button(monty3,bg='white',text='查询',width=10,height=1,\ command=lambda :select3(monty3, label7,tree)).grid(column=0, row=7, sticky='W',pady=5) insert_button = tkinter.Button(monty3,bg='white',text='插入',width=10,height=1,\ command=lambda :insert(monty3,label1,label2,label3,label4,label5,label6,\ label7,label8,label9)).grid(column=1, row=7, sticky='W',padx=5,pady=5) delete_button = tkinter.Button(monty3,bg='white',text='删除',width=10,height=1,\ command=lambda :delete(monty3, label7)).grid(column=2, row=7, sticky='W',pady=5)
效果如下
到此这篇关于Python中tkinter+MySQL实现增删改查的文章就介绍到这了,更多相关tkinter MySQL增删改查内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
相关文章
- 这篇文章主要介绍了MySQL性能监控软件Nagios的安装及配置教程,这里以CentOS操作系统为环境进行演示,需要的朋友可以参考下...2015-12-14
- 新版 Mysql 中加入了对 JSON Document 的支持,可以创建 JSON 类型的字段,并有一套函数支持对JSON的查询、修改等操作,下面就实际体验一下...2016-08-23
深入研究mysql中的varchar和limit(容易被忽略的知识)
为什么标题要起这个名字呢?commen sence指的是那些大家都应该知道的事情,但往往大家又会会略这些东西,或者对这些东西一知半解,今天我总结下自己在mysql中遇到的一些commen sense类型的问题。 ...2015-03-15- 这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
- 一、先说一下为什么要分表:当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。根据个人经验,mysql执行一个sql的过程如下:1...2014-05-31
- yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2使用中的一些基本的增删改查操作。 User::find()->all(); //返回所有用户数据; User::findOne($id); //返回 主键...2015-11-24
- 我们自己鼓捣mysql时,总免不了会遇到这个问题:插入中文字符出现乱码,虽然这是运维先给配好的环境,但是在自己机子上玩的时候咧,总得知道个一二吧,不然以后如何优雅的吹牛B。...2015-03-15
- 这几天在centos下装mysql,这里记录一下安装的过程,方便以后查阅Mysql5.5.37安装需要cmake,5.6版本开始都需要cmake来编译,5.5以后的版本应该也要装这个。安装cmake复制代码 代码如下: [root@local ~]# wget http://www.cm...2015-03-15
- 宿主机使用网线的时候,客户机在Bridged Adapter模式下,使用Atheros AR8131 PCI-E Gigabit Ethernet Controller上网没问题。 宿主机使用无线的时候,客户机在Bridged Adapter模式下,使用可选项里唯一一个WIFI选项,Microsoft Virtual Wifi Miniport Adapter也无法上网,故弃之。...2013-09-19
- 首先要声明一点,大部分情况下,修改MySQL密码是需要有mysql里的root权限的...2013-09-11
- MySQL命令行导出数据库: 1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录 如我输入的命令行:cd C:/Program Files/MySQL/MySQL Server 4.1/bin (或者直接将windows的环境变量path中添加该目录) ...2013-09-26
- 一、连接Mysql格式: mysql -h主机地址 -u用户名 -p用户密码1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录mysql/bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密...2015-11-08
- Navicat for MySQL注册码用来激活 Navicat for MySQL 软件,只要拥有 Navicat 注册码就能激活相应的 Navicat 产品。这篇文章主要介绍了Navicat for MySQL 11注册码\激活码汇总,需要的朋友可以参考下...2020-11-23
- 这篇文章主要介绍了mysql IS NULL使用索引案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...2021-08-14
- 这篇文章主要介绍了node.js如何操作MySQL数据库,帮助大家更好的进行web开发,感兴趣的朋友可以了解下...2020-10-29
- 这篇文章主要介绍了基于PostgreSQL和mysql数据类型对比兼容,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-25
- 一、准备编译环境,安装所需依赖包yum groupinstall 'Development' -y yum install openssl openssl-devel zlib zlib-devel -y yum install readline-devel pcre-devel ncurses-devel bison-devel cmake -y二、编译安...2015-10-21
Mysql中 show table status 获取表信息的方法
这篇文章主要介绍了Mysql中 show table status 获取表信息的方法的相关资料,需要的朋友可以参考下...2016-03-12- 这篇文章主要为大家分享了20分钟MySQL基础入门教程,快速掌握MySQL基础知识,真正了解MySQL,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-12-02
- 传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关...2013-09-11