Вставить в БД SQLite из Python - "рядом"? ": Синтаксическая ошибка" - PullRequest
0 голосов
/ 18 июня 2020

Я продолжаю получать эту ошибку при попытке вставить данные из Pandas df в базу данных SQLite: near "?": syntax error. Фрагмент кода выглядит так, а в другом скрипте аналогичная идея работает нормально. Мой df имеет 4 столбца (int и 3x строки), те же имена столбцов и типы находятся в таблице SQLite с именем titles.

conn = sqlite3.connect('test_db_2.db')
c = conn.cursor()

for i in range(len(df)):
    try:
        c.execute("""INSERT INTO titles (?,?,?,?)""",df.iloc[i,:])
        conn.commit()

В чем может быть причина?

1 Ответ

3 голосов
/ 18 июня 2020

Вам не хватает ключевого слова VALUES(), которое должно предшествовать кортежам значений, которые вы хотите вставить:

INSERT INTO titles VALUES (?, ?, ?, ?)
                 --^--  

Я бы также рекомендовал перечислить столбцы, которые вы хотите вставить. Это хорошая практика в SQL, поскольку он упрощает понимание запроса для тех, кто не знает вашу структуру данных, и может позволить вам не предоставлять значения для всех столбцов:

INSERT INTO titles(col1, col2, col3, col4) VALUES (?, ?, ?, ?)
                --^ -- changae this to your actual column names
...