es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo comparar mi cadena con el retorno en Python

Tengo este código:

log_in = f'SELECT user_name,fname FROM users;'
cursor = connection.cursor()
cursor.execute(log_in)
result = cursor.fetchall()
cursor.close()
print(type(result))
print(result)
print('bfuqua' in result)
if 'bfuqua' in result:
    unique = False
    print('Ese nombre de usuario ya existe. Por favor, inténtelo de nuevo.')

Cuando imprimo el tipo, obtengo <class 'list'=""> como tipo de retorno, [(bfuqua,)] como datos de la variable result. Mi problema es que debería entrar en el if statement, pero el resultado de la tercera declaración de impresión dice False. Regresa True cuando pongo result[0], pero necesito poder escanear toda la lista en busca de la cadena. No sé qué está pasando.

Si hay otras formas de verificar si la cadena está en el resultado de la consulta, ¡estoy más que dispuesto a escucharlo!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Basándonos en el fragmento de código proporcionado, parece que la variable result es una lista de tuplas. Cada tupla contiene los valores devueltos por la sentencia SELECT, en este caso, sólo la columna user_name y la columna fname.

    Para comprobar si la cadena ‘bfuqua’ está en la lista resultante, es necesario iterar sobre la lista y comprobar cada tupla en busca de la presencia de esa cadena. Aquí tenemos un ejemplo:

    log_in = 'SELECT user_name, fname FROM users;'
    cursor = connection.cursor()
    cursor.execute(log_in)
    result = cursor.fetchall()
    cursor.close()
    
    print(type(result))  # <class 'list'="">
    print(result)        # [('bfuqua', 'Bob'), ('jdoe', 'John'), ...]
    
    found = False
    for row in result:
        if 'bfuqua' in row:
            found = True
            break
    
    if found:
        print('Ese nombre de usuario ya existe. Por favor, inténtalo de nuevo.')
    

    Alternativamente, se puede utilizar una comprensión de lista para crear una lista de nombres de usuario a partir del resultado y comprobar si ‘bfuqua’ está en esa lista:

    log_in = 'SELECT user_name FROM users;'
    cursor = connection.cursor()
    cursor.execute(log_in)
    result = cursor.fetchall()
    cursor.close()
    
    user_names = [row[0] for row in result]
    if 'bfuqua' in user_names:
        print('Ese nombre de usuario ya existe. Por favor, inténtalo de nuevo.')
    

    De cualquier manera debería funcionar para comprobar la presencia de ‘bfuqua’ en el resultado de la sentencia SELECT.

Comments are closed.