首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >near ",":执行SQLite update时出现语法错误

near ",":执行SQLite update时出现语法错误
EN

Stack Overflow用户
提问于 2019-08-29 12:49:50
回答 1查看 234关注 0票数 0

我使用python编写了一个程序,将读取的信息写入sqlite数据库。

我想逐行读取一个txt文件,当读取一些特定的单词时,sql数据库中相应的值应该加1。

但是当我使用update方法时,出现错误: near ",":语法错误。

代码语言:javascript
运行
复制
    conn = sqlite3.connect(fname + '\\Static_Analysis.db')

    print fname + 'Static_Analysis.db'

    c = conn.cursor()
    c.execute('''CREATE TABLE MAIN
           (
           FOLDER_NAME           TEXT    NOT NULL,
           FILE_NAME             TEXT    NOT NULL,
           Error_NO          integer,
           Warning_NO         integer,
           Advice_NO          integer,
           Total          integer,
           Note           CHAR(50),
           PRIMARY KEY (FOLDER_NAME, FILE_NAME ));''')

    c.execute('''CREATE TABLE ERROR_REPORT
           (
           NAME           TEXT    NOT NULL,
           PRIMARY KEY (NAME));''')

    c.execute('''CREATE TABLE WARNING_REPORT
           (
           NAME           TEXT    NOT NULL,
           PRIMARY KEY (NAME));''')

    c.execute('''CREATE TABLE ADVICE_REPORT
           (
           NAME           TEXT    NOT NULL,
           PRIMARY KEY (NAME));''')


    i = 1

    for dst in list:
        m_i = 0
        n_i = 0
        p_i = 0
        file = open(dst + "\\summary.log", 'r')
        for line in file:
            if '[Error  ]' in line:
               m_i = m_i + 1
               str = line.split(":")
            print str

           try:
            conn.execute("INSERT INTO MAIN 
                     (FOLDER_NAME, FILE_NAME, Error_NO, Warning_NO, 
                       Advice_NO, Total, Note) VALUES (\"%s\", \"%s\", 
                     \"%d\", \"%d\", 
                      \"%d\", 
                        \"%d\", \"%s\")" % (dst, str[0][9:], 0, 0, 0, 0, 
                           ''))
          except:
            pass
          try:
            conn.execute(
                        """UPDATE MAIN SET 
                               Error_NO = Error_NO + 1, Total = Total + 1 
                               WHERE FOLDER_NAME= ?, FILE_NAME = ? """,
                        (dst, str[0][9:]))
          except Exception as e:
               print e.message
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-29 13:01:51

替换insert语句,如下所示:

代码语言:javascript
运行
复制
conn.execute("""INSERT INTO MAIN (FOLDER_NAME, FILE_NAME, Error_NO, Warning_NO, Advice_NO, Total, Note)
                VALUES(%s, %s, %s, %s, %s, %s, %s)""" % (dst, str[0][9:], 0, 0, 0, 0, ''))

您不需要指定类型,只使用%s python就可以正确处理它。但请确保您作为参数提供的值与表中的值一致。

还有你的更新:

代码语言:javascript
运行
复制
conn.execute("""UPDATE MAIN SET Error_NO = Error_NO + 1, Total = Total + 1 WHERE FOLDER_NAME= %s and FILE_NAME = %s """ % (dst, str[0][9:]))

您的where子句应该是WHERE FOLDER_NAME= %s and FILE_NAME = %sWHERE FOLDER_NAME= %s or FILE_NAME = %s,并且不能带逗号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57703154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档