я получаю сообщение об ошибке при вводе значений в базе данных:Добавление в базу данных SQlite Python
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 элемента , который должен автоинкремент в соответствии с количеством строк).
Вы можете использовать многострочные строковые литералы '«»«несколько строк»«»' или используйте неявное строковое литералирование конкатенации: '(« одна строка »...« другое »)' вместо '\\' в конце. – jfs