【问题标题】:mysql.connector.errors.ProgrammingError: 1064 (42000) - Creating Local NVD Mirrormysql.connector.errors.ProgrammingError: 1064 (42000) - 创建本地 NVD 镜像
【发布时间】:2021-09-22 16:09:53
【问题描述】:

我正在创建 NVD 托管漏洞文件的本地镜像。

我的代码当前正在连接到数据库,运行检查以提取当前文件,然后继续循环浏览这些文件,以查看 .json 文件中是否每天都有新的 CVE 数据。

今天早上,当我的代码循环通过单个 CVE 数据的更新检查时,我开始收到以下错误。

_mysql_connector.MySQLInterfaceError: 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“WHERE ID = 'CVE-2014-4611'' 附近使用正确的语法。

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次): 文件“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"
      },

任何建议都将不胜感激 - 我已经搜索并找不到解决方案。

【问题讨论】:

    标签: python mysql syntax-error


    【解决方案1】:

    这个:

    cveTimeStamp = %s, WHERE ID = %s
    

    应该是:

    cveTimeStamp = %s WHERE ID = %s
    

    删除WHERE之前的最后一个逗号。

    【讨论】:

    • 这正是我的问题。谢谢!我在表中添加了一个新列,并且必须完全忽略了为值添加结束逗号。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    相关资源
    最近更新 更多