Cómo recuperar datos de una base de datos Sqlite3 y compararlos con las entradas del usuario?
~~Esta pregunta es una continuación de otra pregunta.~~
Estoy creando un Formulario de Inicio de Sesión básico y estoy utilizando Flask para servir mis páginas HTML y el paquete Sqlite3 en python para almacenar nombres de usuario y contraseñas.
Comencé creando una Ruta de Aplicación.
Estoy solicitando la entrada del usuario desde el formulario y luego comparándola con los datos que obtengo de mi base de datos llamada ‘Users.db’ de la siguiente manera:
@app.route('/login', methods=["GET", "POST"])
def login():
msg = ''
if request.method == 'POST' and 'username' in request.form and 'password' in request.form:
# Crear variables para acceder fácilmente
username = request.form['username']
password = request.form['password']
# Conexión establecida
connection = sqlite3.connect("Users.db")
# Cursor
user_crsr = connection.cursor()
user_cm = """SELECT username FROM accounts where"""
user_cm_2 = """SELECT password FROM accounts"""
user_crsr.execute(user_cm)
user_crsr.execute(user_cm_2)
user_result = user_crsr.fetchall()
user_result_2 = user_crsr.fetchall()
if username in user_result and password in user_result_2:
# Crear datos de sesión, podemos acceder a estos datos en otras rutas
session['loggedin'] = True
session['id'] = user_result['id']
session['username'] = user_result['username']
# Redirigir a la página de inicio
return '¡Inicio de sesión exitoso!'
else:
# La cuenta no existe o el nombre de usuario/contraseña es incorrecto
msg = '¡Nombre de usuario/contraseña incorrecto!'
return render_template("login.html", msg=msg)
“`
(Sé que este código no es correcto!)
¿Alguna sugerencia sobre qué puedo hacer para recuperar correctamente mis datos de la base de datos y compararlos con la entrada del usuario?
davy.ai
Para recuperar correctamente los datos de la base de datos y compararlos con la entrada del usuario, debes hacer lo siguiente:
Aquí tienes un ejemplo de consulta:
Reemplaza el
?
con el parámetro de nombre de usuario proporcionado.execute
deUSer_crsr
para ejecutar la consulta SQL.Aquí, pasamos el parámetro de nombre de usuario como una tupla y lo usamos como una consulta parametrizada.
fetchone
deUSer_crsr
para obtener el resultado de la consulta SQL.Aquí, recuperamos la primera fila del resultado de la consulta SQL.
Aquí, verificamos si el resultado existe y si la contraseña proporcionada coincide con la segunda columna del resultado.
Aquí está el código actualizado: