Как разрешить несколько переменных в одном запросе, не вызывая нескольких аргументов?

#python #sqlite

#питон #sqlite

Вопрос:

моя текущая строка кода выглядит следующим образом

 c.execute("UPDATE "   str(table), "SET "   str(fieldchoice), " = "   str(newvalue), "WHERE "   str(tableid), "="   str(idchoice))  

я пытаюсь получить значение в таблице, выбранной пользователем для обновления, выполняя определенные критерии, которые вводит пользователь, но когда я пытаюсь запустить ее, это выдает мне ошибку:

 Exception has occurred: TypeError function takes at most 2 arguments (5 given)  File "C:UsersleoauDocumentsActual NEA Project code.py", line 230, in updaterecord  c.execute("UPDATE "   str(table), "SET "   str(fieldchoice), " = "   str(newvalue), "WHERE "   str(tableid), "="   str(idchoice))  File "C:UsersleoauDocumentsActual NEA Project code.py", line 38, in menu  updaterecord()  File "C:UsersleoauDocumentsActual NEA Project code.py", line 306, in lt;modulegt;  menu()  

любая помощь будет признательна!

Комментарии:

1. В чем заключается этот c.execute метод?

2. Вам почти наверняка нужна одна строка, а не отдельные строковые аргументы, основанные на произвольных разрывах строк.

3. если это упражнение по построению динамических запросов, я мог бы увидеть, что это полезно, но если вы хотите, чтобы подобные вещи были реализованы проверенным способом: взгляните на SQLAlchemy.

Ответ №1:

Код передает 4 аргумента execute , разделенных запятыми. Это будет выглядеть как допустимый sql, если его передать print . Но это все равно 4 аргумента. Используйте вместо , при создании строки запроса.