2014-08-15 3 views
-1

У меня есть база данных в mysql, и я работаю в приложении в QT4, я использую Mysqldb-коннектор, я уже успешно подключен к базе данных, но когда я запрашиваю table t_usuarios Я не знаю, как это оценить. Вы можете мне помочь? Заранее спасибо.MysqlDb и Pyqt4, сравнивающие переменные

Часть моего кода:

def chequeouser(self): 
    passwdcheck = str(txt_password.text()) 
    usuariover = str(txt_usuario.text()) 
    # datosLogin = "SELECT * FROM t_usuarios WHERE id_usuario = 'usuario' AND pasword = 'password' 
    cursor = dbase.cursor() 
    cursor.execute("SELECT id_usuario, password FROM t_usuarios WHERE id_usuario = %s AND password = %s", (usuariover, passwdcheck)) 
    checar = cursor.fetchone() 

Спасибо за пользователя, который ответит мне ... Я делаю это, но с некоторыми изменениями, как следовать ..

passwdcheck = str(txt_password.text()) 
    usuariocheck = str(txt_usuario.text()) 
    # datosLogin = "SELECT * FROM t_usuarios WHERE id_usuario = 'usuario' AND pasword = 'password' 
    cursor = dbase.cursor() 
    cursor.execute("SELECT id_usuario, password FROM t_usuarios WHERE id_usuario = %s AND password = %s", (usuariocheck, passwdcheck)) 
    row = cursor.fetchone() 
    if row == None: 
     print "no data:"+ usuariocheck 
     return 
    if row[1] == passwdcheck: 
     print "user and password combination is correct" +usuariocheck 
    else : 
     print "your input is incorrect" 

Я думаю, сделай это в ответ, но я не уверен, что это правильно или нет.

+0

им также используется ... это рез = Str (cursor.rowcount), но и возвращать 0 , –

+0

в PHP ... использовал бы это .... [code] if (! $ Result || mysql_num_rows ($ result) <= 0) { $ this-> HandleError ("Ошибка входа в систему".) «Имя пользователя или пароль не совпадают»); return false; } return true; [/ code], но в python я не знаю ... –

ответ

0

fetchone() возвращает строку данных. Первый элемент строки [0], 2-й элемент строки [1], и т.д.

Пример:

def chequeouser(self): 
    passwdcheck = str(txt_password.text()) 
    usuariover = str(txt_usuario.text()) 
    # datosLogin = "SELECT * FROM t_usuarios WHERE id_usuario = 'usuario' AND pasword = 'password' 
    cursor = dbase.cursor() 
    cursor.execute("SELECT id_usuario, password FROM t_usuarios WHERE id_usuario = %s AND password = %s", (usuariover, passwdcheck)) 
    row = cursor.fetchone() 
    if not row: 
     print "no rows!" 
     return 
    if passwdcheck == row[1]: 
     print 'MATCH for user', row[0] 
    else: 
     print 'uhoh' 
+0

row = cursor.fetchone() if passwdcheck == row [1]: print 'MATCH для пользователя', строка [0] else: Печать 'uhoh ' ... ... #### выдает эту ошибку .... if passwdcheck == row [1]: TypeError: объект «NoneType» не имеет атрибута «__getitem__» –

+0

, если я изменяю «cursor.fetchone()» на cursor.fetchall() ····· >> if passwdcheck == row [1]: IndexError: индекс tuple вне диапазона –

+0

@mitsuzeroblackout, вероятно, 'SELECT' не соответствует ни одному из строк, поэтому' fetchone() ' возвращает None. Я обновил код. – johntellsall