在python中从MySql数据库获取数据时出错
我试图使用Python中的WHERE子句从Mysql数据库获取密码,并将密码存储在变量“DbPassword”中,但当我打印“DbPassword”时,它打印“None” 有人能解释为什么会发生这种情况,我该如何解决? 多谢各位在python中从MySql数据库获取数据时出错,python,mysql,tkinter,passwords,where-clause,Python,Mysql,Tkinter,Passwords,Where Clause,我试图使用Python中的WHERE子句从Mysql数据库获取密码,并将密码存储在变量“DbPassword”中,但当我打印“DbPassword”时,它打印“None” 有人能解释为什么会发生这种情况,我该如何解决? 多谢各位 最后得到了答案做了一些改变 修改:sql=“从用户名为“%s”的用户中选择密码。当前执行(sql,(用户)) 收件人:sql=“从电子邮件地址=”+self.Username.get()+“”cur.execute(sql)的用户中选择密码” 你能把print(e)添加
最后得到了答案做了一些改变 修改:
sql=“从用户名为“%s”的用户中选择密码。当前执行(sql,(用户))
收件人:sql=“从电子邮件地址=”+self.Username.get()+“”cur.execute(sql)的用户中选择密码”
你能把
print(e)
添加到except块中吗?还有输出的问题吗?什么是User
,试试这个cur.execute(sql,(User,)
@snakecharmerb添加了打印(e)输出没有变化,我上传了一个屏幕截图,请看一看。@CoolCloud User是登录时输入的用户名,使用此“用户”搜索数据库,无论“用户”是否注册“pas”也是登录时输入的密码。“pas”将与数据库中存储的密码进行比较,数据库中存储的密码将被提取并存储在DbPassword中。此外,您还可以删除”
,如sql=“从用户名=%s”的用户处选择密码这是不安全的,因为它可以接受sql注入,建议使用参数替换,而不是尝试类似于c.execute(“从用户名为%s的用户中选择密码”(self.Username.get())
的方法,我认为它会起作用
def searchdb(self):
User = (self.Username.get())
pas = (self.Password.get())
myconn = mysql.connector.connect(host = "localhost", user = "root", passwd = "qwerty321", database = "admin")
if len(User) == 0 and len(pas) == 0 :
tkinter.messagebox.showinfo("Pharmacy Management System","Please fill in the Login Details")
elif len(User) == 0 and len(pas) != 0 :
tkinter.messagebox.showinfo("Pharmacy Management System","Please Enter a Username")
elif len(User) != 0 and len(pas) == 0:
tkinter.messagebox.showinfo("Pharmacy Management System","Please enter a Password")
else:
try:
#seacrch data
#print("%s\n%s"%(User,pas) )
sql = "SELECT password FROM users WHERE user_name = '%s'"
cur = myconn.cursor()
cur.execute(sql,(User))
DbPassword = cur.fetchone()
print("%s"%(DbPassword))
if (pas == str(DbPassword)) :
self.btnRegistration.config(state=NORMAL)
self.btnHospital.config(state=NORMAL)
else:
tkinter.messagebox.askokcancel("Pharmacy Management System","You have entered an invalid login details")
self.btnRegistration.config(state=DISABLED)
self.btnHospital.config(state=DISABLED)
self.Username.set("")
self.Password.set("")
self.txtUsername.focus()
except Error as e:
# tkinter.messagebox.showinfo("Pharmacy Management System","NO RECORD FOUND !")
myconn.rollback()
Window1.Reset(self)
myconn.close()