【Python基础编程】tkinter+pymysql 实现数据库查询与插入(简单的登录与注册功能)


前言

IDLE中并没有提供依靠拖动空间搭建窗体应用的环境,需要我们自己去了解一些调用系统接口的模块,从而去编写程序。

正文

1.tkinter

tkinter提供了众多控件

使用的一般规则为:

step1:引入模块

1 from tkinter import *

step2:实例化一个窗体,实例化控件,摆放控件

 1 #窗体绘制
 2 LoginFrom=Tk()
 3 #实例化控件
 4 lbl1=Label(LoginFrom,text="用户名")
 5 lbl2=Label(LoginFrom,text="密码")
 6 txt1=Entry(LoginFrom)
 7 txt2=Entry(LoginFrom)
 8 bttn1=Button(LoginFrom,text="登录",command=self.log)
 9 bttn2=Button(LoginFrom,text="注册",command=self.regs)
10 #摆放控件,这里的摆放函数有多种如.grid(),.place()有自己的调整参数,这里简单摆放即可
11 lbl1.pack()
12 self.txt1.pack()
13 lbl2.pack()
14 self.txt2.pack()
15 bttn1.pack()
16 bttn2.pack()
17 #也可以这样直接摆放
18 Button(LoginFrom,text="查询",command=self.search).pack()

像label,Entry等简单控件实例化格式为:    控件名=控件类型(放在哪个窗体,显示内容="文字")

像button等控件需要在以上基础上指定一个函数事件command=函数名

这样就能运行出一个不那么美观的窗体

 

 

 

tkniter提供的控件

 

 

 

 

2.pymysql

 pymysql是用于操作mysql数据库的模块,像.NET语言中的sqlclient

在使用之前要引入

import pymysql

剩下的事情由connect链接对象与cursor游标兑现完成

pymysql链接mysql数据库的步骤有

#指定链接参数新建connect对象
conn=pymysql.connect(host="localhost",\
      user="root",password="root",database="newdb",charset="utf8")
#新建cursor sql语句有关的对象
cursor = conn.cursor()
#执行sql语句
sql="select * from admin"
#返回执行状态
cursor.execute(sql)
#获取数据
cursor.fetchall()

总文

 

 源代码

from tkinter import *
from tkinter import messagebox
import pymysql
class Frm:
      conn=pymysql.connect(host="localhost",\
      user="root",password="root",database="newdb",charset="utf8")
      def __init__(self):
            
            LoginFrom=Tk()#窗体绘制
            lbl1=Label(LoginFrom,text="用户名")
            lbl2=Label(LoginFrom,text="密码")
            self.txt1=Entry(LoginFrom)
            self.txt2=Entry(LoginFrom)
            bttn1=Button(LoginFrom,text="登录",command=self.log)
            bttn2=Button(LoginFrom,text="注册",command=self.regs)
            lbl1.pack()
            self.txt1.pack()
            lbl2.pack()
            self.txt2.pack()
            bttn1.pack()
            bttn2.pack()
            Button(LoginFrom,text="查询",command=self.search).pack()
            
            LoginFrom.mainloop()
      def search(self):
            cursor = self.conn.cursor()
            print(cursor)
            sql="select * from admin"
            cursor.execute(sql)
            print(cursor.fetchall())
            cursor.close()
      def log(self):
            cursor = self.conn.cursor()
            print(cursor)
            sql="select * from admin where admin_name='"+self.txt1.get()+\
            "'and admin_psw='"+self.txt2.get()+"'"
            if(cursor.execute(sql)):
                  messagebox.showinfo("系统提示","登陆成功")
                  
            else :
                  messagebox.showerror("系统提示","账号或者密码错误")
            cursor.close()
            
      def regs(self):
            RegsFrom=Tk()
            
            lbl1=Label(RegsFrom,text="用户名")
            lbl2=Label(RegsFrom,text="密码")
            self.txt3=Entry(RegsFrom)
            self.txt4=Entry(RegsFrom)
            lbl1.pack()
            self.txt3.pack()
            lbl2.pack()
            self.txt4.pack()
            bttn3=Button(RegsFrom,text="点击注册",command=self.regsclick)
            bttn3.pack()
            
      def regsclick(self):
            cursor = self.conn.cursor()
            print(RegsFrom)
            print(cursor)
            sqlin="insert into admin(admin_name,admin_psw) VALUES(%s,%s)"
            
            data = [
                (self.txt3.get(), self.txt4.get())]
            if(cursor.executemany(sqlin,data)):
                  messagebox.showinfo("系统提示","注册成功")
                  print(self.txt3.get())
                  #这一步是插入语句中至关重要的的一部分,查询语句可以没有但是插入更新删除等语句要有
                  self.conn.commit()

            cursor.close()
      def quit(frm):
            frm.destroy()
if __name__=='__main__':
      
     a=Frm()

                                

运行结果展示

 

 按登录,由于没有写登录后的窗口只会提示这个

 

 按注册

弹出新的窗体

 

 注册功能

 

 

数据库中查看

 

 查询--打印在控制台上

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM