MySQL.connector.ошибки.ProgrammingError: 1064 (42000): у вас ошибка в вашем синтаксисе SQL;

#mysql #syntax-error

#mysql #синтаксическая ошибка

Вопрос:

Я новичок в Python и MySQL. Я хочу создать логин, который извлекает данные из базы данных. Я использую Tkinter в качестве графического интерфейса Python.

Вот мой фрагмент кода.

 def login(self):
    login_username = username.get()
    login_password = password.get()

    #connect to db
    db = mysql.connector.connect(host = 'localhost', user = 'root', password = '', database = 'user')

    #create a cursor
    mycursor = db.cursor()

    #if (login_username.get() == "" or login_password.get() == ""):
        #messagebox.showinfo("", "Please complete the required field")
    #else:

    loop = 'true'
    while(loop == 'true'):
        if(mycursor.execute("SELECT * FROM useraccess WHERE user_type, password VALUES (%s, %s)", (login_username, login_password))):
            db.commit()
            messagebox.showinfo("", "Successfully Login")
        else:
            db.commit()
            messagebox.showerror("", "Invalid username or password")


    #commit
    #db.commit()
  

Между тем, когда я запускаю этот код, он показывает ошибку, которая
mysql.connector.ошибки.ProgrammingError: 1064 (42000): у вас ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом со «ЗНАЧЕНИЯМИ пароля (‘d’, ‘ddddd’)’ в строке 1

Вот моя база данных:https://i.stack.imgur.com/6Big9.png

Кто-нибудь может помочь мне решить эту проблему?

Комментарии:

1. Измените синтаксис условия фильтрации: WHERE user_type = %s and password = %s

2. я уже изменил его, но теперь он показывает сообщение об ошибке, которое является mysql.connector.errors. InternalError: найден непрочитанный результат

3. Посмотрите в python API на использование библиотек. execute возвращает не то, что вы думаете. Вам не нужны commit инструкции на SELECT . И не храните пароли в виде обычного текста.

4. @Eve11 «ПАРОЛЬ» — это ключевое слово mysql, не используйте его в качестве имени таблицы / столбца. Как вы видите, это сбивает с толку, потому что команда «ПАРОЛЬ» там не имеет смысла.

5. @danblack это работает, большое спасибо за вашу помощь