ID标记不是python中的数字自动递增

ID标记不是python中的数字自动递增,python,python-3.x,sqlite,Python,Python 3.x,Sqlite,我正在学习python,并尝试复制在线教程的功能。我正在尝试创建一个python桌面应用程序,其中数据存储在Postgresql中。代码添加到下面 `cur.execute("CREATE TABLE IF NOT EXISTS book (id INTEGER PRIMARY KEY, title text, author text, year integer, isbn integer)")` 问题在于(id INTEGER主键),当我执行代码时,它在第一个索引中显示为none。我想展示

我正在学习python,并尝试复制在线教程的功能。我正在尝试创建一个python桌面应用程序,其中数据存储在Postgresql中。代码添加到下面

 `cur.execute("CREATE TABLE IF NOT EXISTS book (id INTEGER PRIMARY KEY, title text, author text, year integer, isbn integer)")`
问题在于(id INTEGER主键),当我执行代码时,它在第一个索引中显示为none。我想展示数字。 请帮忙

这适用于Python 3.7.3,psycopg2==2.8.3

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 integer, isbn integer)")
conn.commit()
conn.close()
我所期望的结果是第一个索引中的数字自动递增,而目前它没有显示任何数字。 下面是目前和预期的结果。 无标题作者年isbn
01 title auther year isbn

尝试使用游标execute对CREATE语句无效,因此为NONE。请参见下面的示例

重新索引:- 由于
column\u name INTEGER主键
的特殊性,它将列定义为rowid列的别名,而rowid列是使用底层B树存储引擎的特殊内在索引

插入一行时,如果没有为列指定值(例如,
INSERT INTO book(title,author,year,isbn)值('book1','the author','1999','1234567890')
,则id将为1,并且通常(但不一定)插入的下一行的id将为2,依此类推

如果在添加一些行后使用
SELECT*FROM book
,则这些行将根据id排序,因为没有指定/使用其他索引

也许你可以看看

例子 也许考虑下面的例子:-

DROP TABLE IF EXISTS book;
CREATE TABLE IF NOT EXISTS book (id INTEGER PRIMARY KEY, title text, author text, year integer, isbn integer);
INSERT INTO book (title,author, year, isbn) VALUES 
    ('book1','The Author','1999','1234567890'),
    ('book2','Author 2','1899','2234567890'),
    ('book3','Author 3','1799','3234567890')
;
INSERT INTO book VALUES (100,'book10','Author 10','1999','4234567890'); --<<<<<<<<<< specific ID
INSERT INTO book (title,author, year, isbn) VALUES 
    ('book11','Author 11','1999','1234567890'),
    ('book12','Author 12','1899','2234567890'),
    ('book13','Author 13','1799','3234567890')
;
INSERT INTO book VALUES (10,'book10','Author 10','1999','4234567890'); --<<<<<<<<<< specific ID
SELECT * FROM book; 

尝试使用游标execute对CREATE语句无效,因此使用NONE语句无效。请参阅下面的示例

重新索引:- 由于
column\u name INTEGER主键
的特殊性,它将列定义为rowid列的别名,而rowid列是使用底层B树存储引擎的特殊内在索引

插入一行时,如果没有为列指定值(例如,
INSERT INTO book(title,author,year,isbn)值('book1','the author','1999','1234567890')
,则id将为1,并且通常(但不一定)插入的下一行的id将为2,依此类推

如果在添加一些行后使用
SELECT*FROM book
,则这些行将根据id排序,因为没有指定/使用其他索引

也许你可以看看

例子 也许考虑下面的例子:-

DROP TABLE IF EXISTS book;
CREATE TABLE IF NOT EXISTS book (id INTEGER PRIMARY KEY, title text, author text, year integer, isbn integer);
INSERT INTO book (title,author, year, isbn) VALUES 
    ('book1','The Author','1999','1234567890'),
    ('book2','Author 2','1899','2234567890'),
    ('book3','Author 3','1799','3234567890')
;
INSERT INTO book VALUES (100,'book10','Author 10','1999','4234567890'); --<<<<<<<<<< specific ID
INSERT INTO book (title,author, year, isbn) VALUES 
    ('book11','Author 11','1999','1234567890'),
    ('book12','Author 12','1899','2234567890'),
    ('book13','Author 13','1799','3234567890')
;
INSERT INTO book VALUES (10,'book10','Author 10','1999','4234567890'); --<<<<<<<<<< specific ID
SELECT * FROM book; 
因为你说我是手动插入数据,而不是

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 integer, isbn integer)")
conn.commit()
conn.close()
尝试使用

def connect():
conn=sqlite3.connect("books.db")
cur=conn.cursor()
cur.execute("SELECT * FROM books")
for row in cur:
    print(row[0],row[1],row[2],row[3],row[4])
conn.commit()
conn.close()
因为你说我是手动插入数据,而不是

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 integer, isbn integer)")
conn.commit()
conn.close()
尝试使用

def connect():
conn=sqlite3.connect("books.db")
cur=conn.cursor()
cur.execute("SELECT * FROM books")
for row in cur:
    print(row[0],row[1],row[2],row[3],row[4])
conn.commit()
conn.close()

显示负责将数据插入数据库的代码由于我正在学习,我正在手动插入数据。以下是完整的后端代码。以下是后端代码的链接[Wenket.io/python/629a4b47e9?showInstructions=true],以下是前端代码的链接[Wenket.io/python/B570474B8]显示负责将数据插入数据库的代码由于我正在学习,我正在手动插入数据。以下是完整的后端代码。以下是后端代码的链接[Wenket.io/python/629a4b47e9?showInstructions=true],以下是前端代码的链接[Wenket.io/python/B570474B8]谢谢。这正是我想要的结果,但我无法从我当前的代码中执行。@NazeemNajmu比较您基本上试图返回数据的代码(结果集/光标)从CREATE TABLE.statement.返回NONE,因此返回NONE。对于游标执行,您需要一个SELECT语句。您应该能够复制上面的代码或部分代码(如果已经有数据,可能只需要最后6行)。这是后端代码的链接[,这是前端代码的链接[谢谢。这正是我想要的结果,但我无法从我当前的代码中执行。@NazeemNajmu比较您基本上试图返回数据的代码(结果集/光标)从CREATE TABLE.statement.返回NONE,因此返回NONE。对于游标执行,您需要一个SELECT语句。您应该能够复制上面的代码或部分代码(如果已经有数据,可能只需要最后6行)。这是后端代码的链接[,这是前端代码的链接[