Когда я добавляю атрибут Автоинкремент, он хочет, чтобы я объявил столбец в своем операторе вставки? - PullRequest
0 голосов
/ 11 октября 2019

При создании таблицы я объявил столбец в качестве первичного ключа с помощью auto_increment.

Но когда я вставляю строку в свой столбец, он хочет, чтобы я либо добавил первичный ключ, но сначала объявил егоили когда я не вношу первичный ключ, он говорит, что я не дал ему достаточно аргументов.

Почти каждый сайт, на котором я был, говорит мне, что мне не нужно добавлять первичный ключв мой оператор вставки, поскольку он будет автоматически увеличиваться, но, похоже, он этого не делает.

c.execute("""CREATE TABLE IF NOT EXISTS class(

         student_ID INTEGER AUTO_INCREMENT PRIMARY KEY,
         first TEXT,
         last TEXT,
         mark INTEGER,
         target_grade TEXT,
         percentage INTEGER 


)""")

Позже ...

c.execute("INSERT INTO class VALUES (?,?,?,?,?)",
          (first,last,mark,target_grade,percentage,)) 

sqlite3.OperationalError: класс таблицы имеет 6 столбцов, но было предоставлено 5 значений

или

NameError: имя 'ID' не определено

1 Ответ

2 голосов
/ 11 октября 2019

Вы должны включить в оператор INSERT имена столбцов, которые будут получать значения (конечно, не включая столбец первичного ключа):

c.execute("INSERT INTO class (first, last, mark, target_grade, percentage) VALUES (?,?,?,?,?)",(first,last,mark,target_grade,percentage,))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...