【发布时间】:2021-11-16 20:45:20
【问题描述】:
所以我正在尝试创建一个登录系统,有点像普通的 python 终端。我做了一个注册功能,但我正在为登录而苦苦挣扎。我正在尝试将我的输入与用户名和密码进行比较,完成后我将添加 ID。但是我该怎么做呢,我什么都试过了。
当我运行代码并输入正确的详细信息时,它告诉我“登录失败,用户名或密码错误”,这意味着我的 if 语句有问题。
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
password=""
)
mycursor = mydb.cursor(buffered=True)
def login():
mycursor.execute("USE logintest")
login_username = input("Please enter your username or email: ")
login_password = input("Please enter your password: ")
check_login = f"SELECT username FROM users WHERE username = '{login_username}'"
check_password = f"SELECT password FROM users WHERE password = '{login_password}'"
mycursor.execute(check_login)
username_result = mycursor.fetchall()
mycursor.execute(check_password)
password_result = mycursor.fetchall()
passwordr = password_result
usernamer = username_result
print(usernamer)
print(passwordr)
if login_password == passwordr and login_username == usernamer:
print("Logged in successfully")
else:
print("Login failed, wrong username or password")
def register():
mycursor.execute("USE logintest")
new_username = input("please pick a username: ")
new_email = input("please enter your email: ")
new_password = input("please pick a password: ")
insert_new_user = "INSERT INTO users (username, email, password) VALUES (%s, %s, %s)"
new_user = (new_username, new_email, new_password)
mycursor.execute(insert_new_user, new_user)
mydb.commit()
print("User successfully created! insert id:", mycursor.lastrowid)
def options():
print("1. login")
print("2. register")
options = input("please pick 1 or 2: ")
if "1" in options:
login()
elif "2" in options:
register()
else:
print("please only select 1 or 2")
options()
options()
【问题讨论】:
-
试着更详细地解释你的程序在做什么而不是它应该做什么
-
@janpeterka 我刚刚编辑了它:)
-
"SELECT password FROM users WHERE password = '{login_password}'"不应该是WHERE username = '{login_username}'吗?因为需要这个当前用户密码 -
一个用于用户名,另一个用于密码@sittsering
-
我了解用户部分,但不了解密码部分。用户名是唯一的,但不是密码。
标签: python mysql database mysql-python