python - Python 和 mysql 登录表单
问题描述
import tkinter as tk
from tkinter import *
import os
from tkinter import messagebox
from PIL import ImageTk , Image
import mysql.connector
mydb=mysql.connector.connect(host="localhost",user="root",passwd="welcome123456",database="moonsun_hospital")
cursor=mydb.cursor()
cursor.execute("create database if not exists moonsun_hospital")
cursor.execute("use moonsun_hospital")
#cursor.execute("create table if not exists login_table(username varchar(15),password varchar(30))")
def login():
global login
login_screen=Toplevel()
login_screen.maxsize(450,300)
login_screen.title('Account Login')
login_screen.config(bg="white")
login_screen.iconbitmap(r"C:\Users\Dell\Desktop\Moonsun hospital\background\hospital-2_icon- icons.com_66067.ico")
login_screen_img =ImageTk.PhotoImage(Image.open(r"C:\Users\Dell\Desktop\Moonsun hospital\background\background.jpeg"))
lb2 = Label(login_screen,image =login_screen_img)
lb2.image =login_screen_img
lb2.pack()
Label(login_screen, text="USERNAME").place(x=210,y=100)
username_login_entry = Entry(login_screen, textvariable="username")
username_login_entry.place(x=180,y=125)
Label(login_screen, text="PASSWORD").place(x=210,y=150)
password__login_entry = Entry(login_screen, textvariable="password", show= '*')
password__login_entry.place(x=180,y=175)
def OK():
username=username_login_entry.get()
password=password__login_entry.get()
mydb=mysql.connector.connect(host="localhost",user="root",passwd="welcome123456",database="moonsun_hospital")
cursor=mydb.cursor()
savequery="select * from Login_table"
cursor.execute(savequery)
myresult=cursor.fetchall()
for i in myresult:
if username in i and password in i:
messagebox.showinfo("LOGIN",'LOGIN SUCCESSFUL')
#moonsun_main.py()
else:
messagebox.showerror("LOGIN ERROR","LOGIN ERROR")
mydb.commit()
cursor.close()
mydb.close()
#moonsun_register.py()
Button(login_screen,text="Login", height=1, width=6,bg="#AFF8DB",command=OK).place(x=215 , y = 200 )
我认为能够执行它....很多错误登录算法没有以正确的方式工作请给我一些想法我尝试了很多算法但我不知道它有什么问题我希望能尽快得到答复或以后
解决方案
您可能应该让MySQL
查询检查登录,这样更容易:
def OK():
username = username_login_entry.get()
password = password__login_entry.get()
mydb = mysql.connector.connect(host="localhost",user="root",passwd="welcome123456",database="moonsun_hospital")
cursor = mydb.cursor()
savequery = "SELECT * FROM Login_table WHERE username=%s AND password=%s" # Get the records with these username and password ONLY
cursor.execute(savequery,(username,password))
myresult = cursor.fetchall()
if myresult: # If there is such a record, then success
messagebox.showinfo("LOGIN",'LOGIN SUCCESSFUL')
# Whatever you want to do after user is authentic
new = Toplevel() # To open new window
else: # Wrong password
messagebox.showerror("LOGIN ERROR","LOGIN ERROR")
cursor.close()
mydb.close()
这样您就不必使用太多if
和for
循环。这里%s
称为参数,您在执行查询时用username
andpassword
代替它的值,所以查询字面意思是:
SELECT * FROM Login_table WHERE username='John' AND password='123123'; -- If username is john and password is 123123
推荐阅读
- javascript - gulp4 的 watch 任务的问题
- xcode - XCode 9.3 缺少时间线滑块
- arduino - 将文本从 PROGMEM 传递到 Arduino 中的功能
- excel - 多个 IF 和 AND
- node.js - 如何使用 fetchMessages() 获取一定数量的消息,然后以某种方式发送它们?
- python-3.x - Discord.py 是否可以在没有人在服务器中的情况下向某人发送直接消息?
- r - R函数trim()的包是什么?
- java - 如何从列表的哈希集中获取项目?
- nginx - JHipster 社交登录中的重定向 URL 不正确
- linux - 将子文件夹移出到新存储库