Исправляем ошибку в SQLite: неверное количество связок
Быстрый ответ
Количество местозаполнителей ?
в SQL-запросе должно соответствовать числу передаваемых значений. Если вы хотите вставить одно значение, вы можете использовать следующий синтаксис:
cursor.execute("INSERT INTO table(column) VALUES(?)", (single_value,))
Если требуется вставить несколько значений, сделайте так:
cursor.execute("INSERT INTO table(col1, col2) VALUES(?, ?)", (value1, value2))
Для массовой вставки значений можно воспользоваться методом executemany
:
cursor.executemany("INSERT INTO table(col1, col2) VALUES(?, ?)", [(val1, val2), ...])
Помните о том, что количество местозаполнителей должно совпадать с количеством передаваемых значений.
Завершение
Если вы получаете ошибку при обработке отдельного элемента, возможно, проблема кроется в том, что он интерпретируется как кортеж. Чтобы избежать этого, используйте синтаксис (item,)
, а не (item)
, чтобы корректно представить элемент в виде кортежа.
Визуализация
Правильное соединение: 🚂 — (🔗) — [📦] Одно выражение (локомотив) связано с одним значение (грузовой вагон).
Некорректное соединение: 🚂 — (🔗x1) — [📦📦📦... (x74)] Одно выражение связано с 74 значениями, что приводит к ошибке.
Запомните, количество SQL-местозаполнителей должно соответствовать количеству передаваемых значений.