无法检查用户登录名是否在mySQL数据库中

时间:2019-09-12 19:57:45

标签: python mysql mysql-python

我完全是初学者 我正在通过mysql-connector软件包使用python连接到mySQL数据库。我已经创建了登录系统,向数据库中添加了数据,但是我无法使用if语句检查用户是否在数据库中。当我通过一个好的用户名和密码时,我得到了elif语句。有人知道代码有什么问题吗?

def OldUser():
  mycursor.execute("SELECT * FROM Users")
  Users = mycursor.fetchall()
  oldusername = input("Username: ")
  oldpassword = input("Password: ")

  if oldusername and oldpassword == Users:
    print("Login was successfully!")
  elif oldusername and oldpassword != Users:
    print("Something was wrong, log in you again")

1 个答案:

答案 0 :(得分:1)

Users变量包含查询返回的所有行。在检查用户名/ pw之前,您需要遍历每一行:

for user in Users:
  # Assuming the column order is (username, password)
  if oldusername and oldusername == user[0]
    print("Login was successfully!")
  elif oldusername and oldpassword != user[1]:
    print("Something was wrong, log in again")

您还可以通过按用户名过滤来简化查询

def OldUser():
  oldusername = input("Username: ")
  oldpassword = input("Password: ")
  mycursor.execute("SELECT password FROM Users where username = %s", oldusername)
  if mycursor.rowcount > 0:
    # Check password
    row = mycursor.fetchone()
    if oldpassword == row[0]
      print("Login was successfully!")
    else:
      # Invalid password
      print("Something was wrong, log in again")
  else:
    # User not found
    print("Something was wrong, log in again")

这是一篇可能对您有帮助的文章:http://www.mysqltutorial.org/python-mysql-query/