Я новичок в mySQL с Python, и я получаю общую ошибку 1054 при попытке выполнить подготовленную инструкцию SQL INSERT с дружественными Python заполнителями ('% s')Ошибка SQL 1055 «Неизвестный столбец« xxxxx »в« списке полей »в Python с заполнителями
Я понимаю, что нормальное решение состоит в том, чтобы добавлять кавычки вместо обратных тиков или добавлять их, если они отсутствуют для вставленных значений, однако я проверил проверку cols и vals кортежи, и я вижу, что они содержатся в одинарных кавычках, поэтому я немного озадачен, почему возникает эта ошибка.
Ниже приведен фрагмент моего кода: (BTW «смещ_по_столбцам» и «» Vals являются кортежи строк (с акцентом на строках :))
Сначала я добавить имена столбцов:
for item in cols:
try:
# First add columns if not already present
query = "ALTER TABLE Parameters ADD COLUMN %s VARCHAR(200)" % (str(item))
cursor.execute(query)
connection.commit()
except:
pass
Тогда я стараюсь добавляющие ценности:
sql = "INSERT INTO Parameters ({0}) VALUES ({1})".format(', '.join(cols), ', '.join(['%s'] * len(cols)));
try:
cursor.execute(sql, vals)
except Exception as e:
print(e)
connection.close()
Иногда нет никаких проблем, но в противном случае я получаю эту ошибку:
(1054, "Unknown column 'ColumnName' in 'field list'")
Является ли моя инструкция Python совершенно неправильной, и не являются ли места не лучшей практикой? Я использую заполнители, так как мои списки очень большие.
Ниже приведена опечатанная версия инструкции SQL-запроса.
INSERT INTO Parameters (TestID, Dev_Type, Version, MAC, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, DayActNxtDateTime, XXXX) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
И ошибка:
(1054, "Unknown column 'DayActNxtDateTime' in 'field list'")
Распечатайте инструкцию SQL после выполнения замены переменных. Если ответ не очевиден, поместите результат в вопрос. –
Вы не можете использовать заполнители для имен полей. –
Привет @Gordon Linoff, я не могу пропустить это утверждение, поскольку это конфиденциальные данные, но я уже проверил это. Я приложу пример, который я приведу после печати. – MikG