SQLite3 неверное количество привязок во втором запросе - PullRequest
0 голосов
/ 01 мая 2020

Используя Python и SQlite3, где c - курсор, этот код ...

        print("vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv")
        print("SQL and parameters:",sql,parm)
        c.execute(sql,parm)
        # Get the row
        print("Executed OK")
        response = c.fetchone()
        # If not successful return null
        if not response:
            return None
        #
        print("and produced ", response)
        print("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^")

дает такой вывод:

vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
SQL and parameters: select * from Links where LinkNum = ? (301,)
Executed OK
and produced  (301, 'Index', 'The Independent', 'https://www.independent.co.uk/', 6, 0)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
SQL and parameters: select * from Links where LinkNum = ? (301,)
Encountered exception of type ProgrammingError with arguments ('Incorrect number of bindings supplied. The current statement uses 1, and there are 6 supplied.',)

The application will close

Два идентичных утверждения. 1 работает, а следующий выдает исключение. Как видно, строка, которую я пытаюсь получить, имеет 6 столбцов, но это единственная подсказка / подсказка, которую я вижу. Может кто-нибудь помочь с отслеживанием проблемы? Спасибо.

1 Ответ

0 голосов
/ 02 мая 2020

Что бы ни вызывало подгонку SQLite, я исправил проблему, извлекая вторую строку / объект вне объекта Links и передавая его в качестве аргумента вызываемому методу, вместо того, чтобы этот метод пытался получить объект .

Проблема все еще будет существовать, но она должна быть глубоко внутри внутренних элементов Python экземпляров и / или SQLite. Как бы то ни было, эта проблема решается с помощью менее сложного кода.

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