#python #mysql #syntax-error
Вопрос:
Я создаю локальное зеркало файлов уязвимостей, размещенных в NVD.
Мой код в настоящее время подключается к базе данных, выполняет проверку, чтобы удалить текущие файлы, а затем переходит к циклическому просмотру этих файлов, чтобы узнать, есть ли внутри них новые данные CVE .файлы json ежедневно.
Сегодня утром я начал получать следующую ошибку, когда мой код выполнял циклическую проверку обновлений отдельных данных CVE.
_mysql_коннектор.Ошибка MySQLInterfaceError: У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на наличие правильного синтаксиса для использования рядом с» ГДЕ ID = «CVE-2014-4611» в строке 1.
Во время обработки вышеуказанного исключения произошло еще одно исключение:
Обратная связь (последний последний вызов): Файл «c….2_add_cvestodb.py», строка 134, в mycursor.execute(sql_update_query, val_update_query)
Ниже приведен соответствующий блок кода.
if newtimesplit > oldtimesplit :
print("It's newer!")
sql_update_query = ("UPDATE vulns set Assigner = %s, Reference1 = %s, Reference2 = %s, Reference3 = %s, Description = %s, impactBaseScore = %s, LastModifiedDate = %s, baseSeverity = %s, cveTimeStamp = %s, WHERE ID = %s")
val_update_query = (Assigner, Reference1, Reference2, Reference3, Description, impactBaseScore, LastModifiedDate, baseSeverity, cveTimeStamp, ID)
mycursor.execute(sql_update_query, val_update_query)
mydb.commit()
updateCtr =1
Фрагмент ключевого значения .json, который вызывает проблемы:
{
"cve" : {
"data_type" : "CVE",
"data_format" : "MITRE",
"data_version" : "4.0",
"CVE_data_meta" : {
"ID" : "CVE-2014-4611",
"ASSIGNER" : "cve@mitre.org"
},
Любые предложения были бы очень признательны — я просмотрел и не могу найти решение.
Ответ №1:
Этот:
cveTimeStamp = %s, WHERE ID = %s
Должно быть:
cveTimeStamp = %s WHERE ID = %s
Удалите последнюю запятую перед WHERE
.
Комментарии:
1. это была именно моя проблема. Спасибо! Я добавил новый столбец в свою таблицу и, должно быть, совершенно упустил из виду добавление закрывающей запятой для значений. Спасибо!