#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 это работает, большое спасибо за вашу помощь