Исправляем ошибку в SQLite: неверное количество связок

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Количество местозаполнителей ? в SQL-запросе должно соответствовать числу передаваемых значений. Если вы хотите вставить одно значение, вы можете использовать следующий синтаксис:

Python
Скопировать код
cursor.execute("INSERT INTO table(column) VALUES(?)", (single_value,))

Если требуется вставить несколько значений, сделайте так:

Python
Скопировать код
cursor.execute("INSERT INTO table(col1, col2) VALUES(?, ?)", (value1, value2))

Для массовой вставки значений можно воспользоваться методом executemany:

Python
Скопировать код
cursor.executemany("INSERT INTO table(col1, col2) VALUES(?, ?)", [(val1, val2), ...])

Помните о том, что количество местозаполнителей должно совпадать с количеством передаваемых значений.

Кинга Идем в IT: пошаговый план для смены профессии

Завершение

Если вы получаете ошибку при обработке отдельного элемента, возможно, проблема кроется в том, что он интерпретируется как кортеж. Чтобы избежать этого, используйте синтаксис (item,), а не (item), чтобы корректно представить элемент в виде кортежа.

Визуализация

Правильное соединение: 🚂 — (🔗) — [📦] Одно выражение (локомотив) связано с одним значение (грузовой вагон).

Некорректное соединение: 🚂 — (🔗x1) — [📦📦📦... (x74)] Одно выражение связано с 74 значениями, что приводит к ошибке.

Запомните, количество SQL-местозаполнителей должно соответствовать количеству передаваемых значений.

Полезные материалы

  1. Документация Python по модулю sqlite3
  2. Работа с данными в Python с использованием SQLite и SQLAlchemy – Real Python
  3. xkcd: Exploits of a Mom
  4. Обзор использования SQLite на Python – YouTube
  5. Программирование SQLite на Python
  6. Учебник по SQLAlchemy