1

在数据库中输入值时出现错误:

values = []
for dictionary in dictionaries:
        for element in keys:
            if element in cols:
                curs.execute('INSERT INTO Root_table(?,?,?,?,?,?,?,?,?,?,?,?,\
                              ?,?,?,?,?,?,?,?,?,?,?,?,?)', dictionary[element])
                #values.append(dictionary[element])
            else:
                curs.execute('INSERT INTO Root_table(?,?,?,?,?,?,?,?,?,?,?,?,\
                              ?,?,?,?,?,?,?,?,?,?,?,?,?)', 'NA')
                #values.append('NA')

        #curs.execute('INSERT INTO Root_table(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', tuple(values))


Error: OperationalError: near "?": syntax error

基本上,我遍历每个字典访问某些值并尝试将它们输入到数据库中。我检查字典的“键”是否在另一个列表中,如果是,则向数据库添加一些值,否则添加“NA”。

我提供了如何在数据库中定义表:

curs.execute("CREATE TABLE Root_table(\
                Id INTEGER PRIMARY KEY, 'a' TEXT, 'b' TEXT,\
                'c' TEXT, 'd' TEXT, 'e' TEXT, 'f' TEXT, 'g' TEXT, 'h' TEXT,\
                'i' TEXT, 'j' TEXT,'k' TEXT, 'l' TEXT, 'm' TEXT, 'n' TEXT,\
                'o' TEXT, 'p' TEXT, 'q' TEXT, 'r' TEXT, 's' TEXT, 't' TEXT,\
                'u' TEXT, 'v' TEXT, 'w' TEXT, 'x' TEXT, 'y' TEXT, 'z' TEXT)")

问号总数?curs.execute('INSERT INTO Root_table(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', dictionary[element])25,而表中有 26 列(第一个是 ID 元素,它应该根据行数自动递增)。

4

1 回答 1

1

你的语法不正确。您需要添加values到查询中,并且由于您没有为所有列提供数据,因此您需要指定哪些:

import sqlite3
c = sqlite3.connect(':memory:')
c.execute("create table mytable (_id integer primary key, a, b)")
c.execute("insert into mytable (a,b) values  (?, ?)", (2,3))
c.execute('select * from mytable').fetchall()
# [(1,2,3)]
于 2013-06-07T16:13:14.847 回答