2016-06-27 2 views
1

я реализовал большинство других транзакций основной базы данных, включая вставку, обновление, выберите с подобным синтаксисом, но при попытке удалить, я получаю ошибкуPython Ошибка подключения при попытке удалить с помощью пользовательского ввода,

mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%s' at line 1

Что бы правильный синтаксис be? Я должен удалить в соответствии с пользовательским вводом. Вот сокращенный вариант моего кода, минус вставки, выберите, обновить Часть .:

elif (choice == 4): 
    mail=raw_input('Enter email of user to be deleted:') 
    print 'Deleting..' 
    delete_user_details(mail) 


def delete_user_details(email): 

    sql = "DELETE FROM users WHERE email = %s" 
    cursor.execute(sql,email) 
+0

Это все ваш код? Строка sql не указана в строке 1 –

+0

Зная ошибку в первой строке, может быть, в вашей строке подключения есть некоторые проблемы? Вы должны написать больше. – isamert

ответ

3

Вам необходимо передать параметры запроса в cursor.execute() как кортеж, даже для одного параметра. Попробуйте следующее:

sql = "DELETE FROM users WHERE email = %s" 
cursor.execute(sql, (email,)) 
+0

Ах !! Большое спасибо!! Я не знаю, как я пропустил это в документации. – momo

+2

Глубокая синтаксическая ошибка, такая как пропуская запятую в кортеже, давала мне головную боль. Всегда радость, чтобы увидеть правильный код и заметить ошибку в моей! благодаря – GHandel

Смежные вопросы