После целого числа больше 9 указано неверное количество привязок. Текущий оператор использует 1, и есть 2 поставленных - PullRequest
0 голосов
/ 08 марта 2020
def delete_Link(id):
    connection = sql_Connect()
    cursor = connection.cursor()

    cursor.execute("DELETE FROM table WHERE id =?", str(id))
    connection.commit()

После перебора строк, когда идентификатор таблицы больше 9, я получаю следующую ошибку

sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 2 supplied.

Ответы [ 2 ]

0 голосов
/ 08 марта 2020

Измените str(id) на (str(id), ), как в этом примере:

import sqlite3

def delete_link(id):
    connection = sqlite3.connect('test.db')
    cursor = connection.cursor()

    cursor.execute("DELETE FROM t WHERE id =?", (str(id),))
    connection.commit()
    print('Deleted ' + str(id))

if __name__ == '__main__':
    for id in range(1, 11):
        delete_link(id)

Ознакомьтесь с некоторыми примерами .execute() для https://docs.python.org/2/library/sqlite3.html. Он показывает, как вы можете отправить кортеж этому методу в параметризованном запросе.

0 голосов
/ 08 марта 2020
def delete_Link(id):
    connection = sql_Connect()
    cursor = connection.cursor()

    cursor.execute("DELETE FROM table WHERE id =?", [id])
    connection.commit()

Изменен исходный фрагмент кода для включения [] вместо (), что, похоже, решило проблему. Надеюсь, что это поможет некоторым другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...