Экранирование обратной косой черты в параметризованном запросе MySQL на Python

#python #mysql #sql

#python #mysql #sql

Вопрос:

Я работаю над файлами Excel и хранением базы данных, точнее, я храню данные Excel в базе данных MySQL. В какой-то момент я выполняю этот запрос:

 query_for_id = ''' SELECT id FROM attivita WHERE attivita = '{0}' '''.format(attivita)
  

И когда я печатаю результат запроса, я получаю это:

‘ ВЫБЕРИТЕ идентификатор ИЗ attivita, ГДЕ attivita = \’Manutenzione \’ ‘

Когда он пытается сопоставить ‘attivita’ с правильным значением, взятым из Excel, я получил ошибки из-за ‘\’.

Я попытался изменить тройные кавычки с » » » на » ‘ «, а также использовать connection.escape_string() , но я не решил проблему. Кто-нибудь может помочь мне разобраться в проблеме? Заранее благодарю вас.

Ответ №1:

Я думаю, что в вашем случае лучше использовать аргументы для выполнения

 query_for_id = ''' SELECT id FROM attivita WHERE attivita = %(attivita)s '''
cursor.execute(query_for_id, { 'attivita': attivita })
  

https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-execute.html