Почему я получаю эту синтаксическую ошибку в SQLITE3? - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь сохранить два lists в моей базе данных sqlite3 . Это мой код:

import sqlite

con=sqlite3.connect('output.db')        
cur=con.cursor()
cur.execute('CREATE TABLE IF NOT EXISTS output(name VARCHAR(10),content VARCHAR(30))')
for i in range(len(X)):
    cur.execute('INSERT INTO output(X,VALUES(?))',(X[i]))
    cur.execute('INSERT INTO output(Y,VALUES(?))',(Y[i]))
con.commit()
cur.close()
con.close()

У меня есть два списка с именами X=['abc','def'] и Y=['ghi','jkl']. Но каждый раз, когда я запускаю этот код, я получаю OperationalError высказывание:

OperationalError: near "VALUES": syntax error

Пожалуйста, помогите мне. Как мне это исправить?

1 Ответ

1 голос
/ 30 января 2020

Команда INSERT:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

Таким образом, она должна быть

query = 'INSERT INTO output (name, content) VALUES(?, ?)'

for i in range(len(X)):
    cur.execute(query, ('X', X[i]))
    cur.execute(query, ('Y', Y[i]))

. Для более надежного решения вы можете использовать dict

data = {'X': X, 'Y': Y}

for key, values in data.items():
    for value in values:
        cur.execute('INSERT INTO output (name, content) VALUES(?, ?)', (key, value))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...