Отредактированный ответ : Благодаря комментарию Шона я вернулся, чтобы поиграть с кодом и выследить проблему. Это правда, что AUTOINCREMENT не нужен и как таковой не является проблемой (я узнал кое-что новое о SQLite).
Следующий код работает. Обратите внимание: поскольку вы не предоставляете данные во все столбцы таблицы, вы должны указать, в какие столбцы вы вставляете данные в операторе вставки. Я удалил ненужное AUTOINCREMENT и изменил оператор вставки для правильной работы.
Также обратите внимание: как уже говорили другие, вы не должны использовать * подстановочный знак для выбора всех столбцов в рабочем коде, а вместо этого перечислять все столбцы по отдельности.
import sqlite3
def connect():
conn=sqlite3.connect("books.db")
cur=conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS book (id INTEGER PRIMARY KEY,title text,author text,year int,isbn int)")
conn.commit()
conn.close()
def insert(title,author,year,isbn):
conn=sqlite3.connect("books.db")
cur=conn.cursor()
cur.execute("INSERT INTO book (title, author, year, isbn) VALUES (?,?,?,?)",(title,author,year,isbn))
conn.commit()
conn.close()
def view():
conn=sqlite3.connect("books.db")
cur=conn.cursor()
cur.execute("SELECT * FROM book ")
rows=cur.fetchall()
conn.close()
return rows
connect()
insert("sample","abc",2003,123456)
insert("sample2","def",2003,123457)
print(view())
Полученная продукция:
[(1, 'sample', 'abc', 2003, 123456), (2, 'sample2', 'def', 2003, 123457)]