Я пытаюсь использовать mysqlDB, но столкнулся с проблемой, которая вообще не имеет для меня смысла.
Моя проблема сосредоточена вокруг имени таблицы в следующих инструкциях execute.
Это работает:
c.execute(u'''insert into AIN0 (Date_Info, Raw_Data, Calculation_Formula, Calculated_Data) values (%s, %s, %s, %s)''',
(str(date), int(raw), int(formula), 0.1))
Ни одна из этих работ:
c.execute(u'''insert into %s (Date_Info, Raw_Data, Calculation_Formula, Calculated_Data) values (%s, %s, %s, %s)''',
(str("AIN0"), str(date), int(raw), int(formula), 0.1))
c.execute(u'''insert into 'AIN0' (Date_Info, Raw_Data, Calculation_Formula, Calculated_Data) values (%s, %s, %s, %s)''',
(str(date), int(raw), int(formula), 0.1))
Дело в том, что оба нерабочих результата приводят к одному и тому же сообщению об ошибке:
ProgrammingError: (1064, "У вас есть ошибка в синтаксисе SQL; обратитесь к руководству, соответствующему вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с" AIN0 "(Date_Info, Raw_Data,Значения Calculation_Formula, Calculated_Data) ('2011' в строке 1 ")
Обратите внимание, что в сообщении об ошибке AIN0 окружен одинарными кавычками, даже в случае, когда я вставил его с помощью оператора интерполяции строкиПросто чтобы быть уверенным, я сделал преднамеренную синтаксическую ошибку в рабочем случае, чтобы увидеть, на что смотрел MySQL.
ProgrammingError: (1064, "У вас есть ошибка в вашем синтаксисе SQL;проверятьруководство, соответствующее вашей версии сервера MySQL для правильного синтаксиса для использования рядом с ')) значения AIN0 (Date_Info, Raw_Data, Calculation_Formula, Calculated_Data) (' 201 'в строке 1 ")
Конечнов том, с которым MySQL работает правильно, AIN0 не окружен одинарными кавычками, что наводит меня на мысль, что именно это и является причиной ошибки.
Почему одинарные кавычки вставляются вокруг моих строк, когда я использую интерполяцию строки как мне заставить их остановиться?