用Python3可视化操作SQLite3

摘要

在python3环境下,通过窗体向SQLite3数据库添加、更新、查询和删除数据,其运行图为:
在这里插入图片描述
如果没有连接数据库会给予提示如图:
在这里插入图片描述

窗体布局代码

def __init__(self):
	self.root=Tk()
	self.root.wm_title('SQlite3操作')
	#禁止调整窗口大小
	self.root.resizable(0, 0)  
	self.frame=Frame(self.root)
	self.frame.pack()
	#数据库连接标识
	self.conflag=0
	#row=0
	self.lab_sid=Label(self.frame,text="学号").grid(row=0,column=0)
	self.vt_sid=StringVar()
	self.txt_sid=Entry(self.frame,textvariable=self.vt_sid,justify='left').grid(row=0,column=1)
	self.lab_sname=Label(self.frame,text="姓名").grid(row=0,column=2)
	self.vt_sname=StringVar()
	self.txt_sname=Entry(self.frame,textvariable=self.vt_sname,justify='left').grid(row=0,column=3)
	#row=1
	self.but_connect=Button(self.frame,text="连接数据库",command=self.ev_but_connect).grid(row=1,column=0,columnspan=2)
	self.but_close=Button(self.frame,text="关闭数据库",command=self.ev_but_close).grid(row=1,column=2,columnspan=2)
	#row=2
	self.but_insert=Button(self.frame,text="插入",command=self.ev_but_insert).grid(row=2,column=0)
	self.but_search=Button(self.frame,text="查询",command=self.ev_but_search).grid(row=2,column=1)
	self.but_update=Button(self.frame,text="更新",command=self.ev_but_update).grid(row=2,column=2)
	self.but_delete=Button(self.frame,text="删除",command=self.ev_but_delete).grid(row=2,column=3)

连接数据库代码

#创建数据库或连接数据库
def get_connect(self):
	conn=sq.connect('stu.db')
	return conn

连接数据库按钮的事件代码

def ev_but_connect(self):
	try:
		conn=self.get_connect()
		c=conn.cursor()
		c.execute("CREATE TABLE IF NOT EXISTS stuInfo (sid INTEGER PRIMARY KEY,sname TEXT)")
		conn.commit()
		self.conflag=1
		messagebox.showinfo('提示','连接成功!')
	except:
		ex="未知错误:"+ str(sys.exc_info()[0])
		messagebox.showerror('错误',ex)

关闭数据库按钮的事件代码

def ev_but_close(self):
	try:
		if(self.conflag==0):
			messagebox.showinfo('提示','数据库是关闭的!')
			return
		conn=self.get_connect()
		conn.close()
		self.conflag=0
		messagebox.showinfo('提示','关闭成功!')
	except:
		ex="未知错误:"+ str(sys.exc_info()[0])
		messagebox.showerror('错误', ex)

插入按钮的事件代码

def ev_but_insert(self):
	try:
		if(self.conflag==0):
			messagebox.showinfo('提示','请连接数据库!')
			return
		conn=self.get_connect()
		c=conn.cursor()
		sid=int(self.vt_sid.get())
		sname=self.vt_sname.get()
		stu=(sid,sname)
		c.execute("INSERT INTO stuInfo VALUES (?,?)",stu)
		conn.commit()
		messagebox.showinfo('提示','插入成功!')
	except:
		ex="未知错误:"+ str(sys.exc_info()[0])
		messagebox.showerror('错误', ex)

查询按钮的事件代码

def ev_but_search(self):
	try:
		if(self.conflag==0):
			messagebox.showinfo('提示','请连接数据库!')
			return
		conn=self.get_connect()
		c=conn.cursor()
		sid=self.vt_sid.get()
		stu=(sid,)
		c.execute("SELECT sname FROM stuInfo WHERE sid=?",stu)
		sname=c.fetchone()
		conn.commit()
		self.vt_sname.set(sname)
	except:
		ex="未知错误:"+ str(sys.exc_info()[0])
		messagebox.showerror('错误', ex)

更新按钮的事件代码

def ev_but_update(self):
	try:
		if(self.conflag==0):
			messagebox.showinfo('提示','请连接数据库!')
			return
		conn=self.get_connect()
		c=conn.cursor()
		sid=int(self.vt_sid.get())
		sname=self.vt_sname.get()
		stu=(sname,sid)
		c.execute("UPDATE stuInfo SET sname=? WHERE sid=?",stu)
		conn.commit()
		messagebox.showinfo('提示','更新成功!')
	except:
		ex="未知错误:"+ str(sys.exc_info()[0])
		messagebox.showerror('错误', ex)

删除按钮的事件代码

def ev_but_delete(self):
	try:
		if(self.conflag==0):
			messagebox.showinfo('提示','请连接数据库!')
			return
		conn=self.get_connect()
		c=conn.cursor()
		sid=self.vt_sid.get()
		stu=(sid,)
		c.execute("DELETE FROM stuInfo WHERE sid=?",stu)
		conn.commit()
		self.vt_sname.set("")
		messagebox.showinfo('提示','删除成功!')
	except:
		ex="未知错误:"+ str(sys.exc_info()[0])
		messagebox.showerror('错误', ex)

完整代码

import sqlite3 as sq
from tkinter import *
from tkinter import messagebox
from tkinter import filedialog
import os

class VGUIAPP:

	def __init__(self):
		self.root=Tk()
		self.root.wm_title('SQlite3操作')
		#禁止调整窗口大小
		self.root.resizable(0, 0)  
		self.frame=Frame(self.root)
		self.frame.pack()
		#数据库连接标识
		self.conflag=0
		#row=0
		self.lab_sid=Label(self.frame,text="学号").grid(row=0,column=0)
		self.vt_sid=StringVar()
		self.txt_sid=Entry(self.frame,textvariable=self.vt_sid,justify='left').grid(row=0,column=1)
		self.lab_sname=Label(self.frame,text="姓名").grid(row=0,column=2)
		self.vt_sname=StringVar()
		self.txt_sname=Entry(self.frame,textvariable=self.vt_sname,justify='left').grid(row=0,column=3)
		#row=1
		self.but_connect=Button(self.frame,text="连接数据库",command=self.ev_but_connect).grid(row=1,column=0,columnspan=2)
		self.but_close=Button(self.frame,text="关闭数据库",command=self.ev_but_close).grid(row=1,column=2,columnspan=2)
		#row=2
		self.but_insert=Button(self.frame,text="插入",command=self.ev_but_insert).grid(row=2,column=0)
		self.but_search=Button(self.frame,text="查询",command=self.ev_but_search).grid(row=2,column=1)
		self.but_update=Button(self.frame,text="更新",command=self.ev_but_update).grid(row=2,column=2)
		self.but_delete=Button(self.frame,text="删除",command=self.ev_but_delete).grid(row=2,column=3)
	
	def ev_but_connect(self):
		try:
			conn=self.get_connect()
			c=conn.cursor()
			c.execute("CREATE TABLE IF NOT EXISTS stuInfo (sid INTEGER PRIMARY KEY,sname TEXT)")
			conn.commit()
			self.conflag=1
			messagebox.showinfo('提示','连接成功!')
		except:
			ex="未知错误:"+ str(sys.exc_info()[0])
			messagebox.showerror('错误',ex)

	def ev_but_close(self):
		try:
			if(self.conflag==0):
				messagebox.showinfo('提示','数据库是关闭的!')
				return
			conn=self.get_connect()
			conn.close()
			self.conflag=0
			messagebox.showinfo('提示','关闭成功!')
		except:
			ex="未知错误:"+ str(sys.exc_info()[0])
			messagebox.showerror('错误', ex)

	def ev_but_delete(self):
		try:
			if(self.conflag==0):
				messagebox.showinfo('提示','请连接数据库!')
				return
			conn=self.get_connect()
			c=conn.cursor()
			sid=self.vt_sid.get()
			stu=(sid,)
			c.execute("DELETE FROM stuInfo WHERE sid=?",stu)
			conn.commit()
			self.vt_sname.set("")
			messagebox.showinfo('提示','删除成功!')
		except:
			ex="未知错误:"+ str(sys.exc_info()[0])
			messagebox.showerror('错误', ex)

	def ev_but_update(self):
		try:
			if(self.conflag==0):
				messagebox.showinfo('提示','请连接数据库!')
				return
			conn=self.get_connect()
			c=conn.cursor()
			sid=int(self.vt_sid.get())
			sname=self.vt_sname.get()
			stu=(sname,sid)
			c.execute("UPDATE stuInfo SET sname=? WHERE sid=?",stu)
			conn.commit()
			messagebox.showinfo('提示','更新成功!')
		except:
			ex="未知错误:"+ str(sys.exc_info()[0])
			messagebox.showerror('错误', ex)
	
	def ev_but_insert(self):
		try:
			if(self.conflag==0):
				messagebox.showinfo('提示','请连接数据库!')
				return
			conn=self.get_connect()
			c=conn.cursor()
			sid=int(self.vt_sid.get())
			sname=self.vt_sname.get()
			stu=(sid,sname)
			c.execute("INSERT INTO stuInfo VALUES (?,?)",stu)
			conn.commit()
			messagebox.showinfo('提示','插入成功!')
		except:
			ex="未知错误:"+ str(sys.exc_info()[0])
			messagebox.showerror('错误', ex)
		
	def ev_but_search(self):
		try:
			if(self.conflag==0):
				messagebox.showinfo('提示','请连接数据库!')
				return
			conn=self.get_connect()
			c=conn.cursor()
			sid=self.vt_sid.get()
			stu=(sid,)
			c.execute("SELECT sname FROM stuInfo WHERE sid=?",stu)
			sname=c.fetchone()
			conn.commit()
			self.vt_sname.set(sname)
		except:
			ex="未知错误:"+ str(sys.exc_info()[0])
			messagebox.showerror('错误', ex)
	
	#创建数据库或连接数据库
	def get_connect(self):
		conn=sq.connect('stu.db')
		return conn

mapp_v=VGUIAPP()
mapp_v.root.mainloop()

致谢

感谢所有在网上开源和不吝赐教的无私奉献者

主要参考网址

http://m.elecfans.com/article/609038.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值