Попытка использовать Cursor execute не будет работать для оператора CREATE и, следовательно, для NONE.Ниже приведен пример.
Re Индексы: -
Не будет конкретного индекса, поскольку column_name INTEGER PRIMARY KEY
особенный, поскольку он определяет столбец как псевдоним столбца rowid, который являетсяспециальный внутренний индекс, использующий базовый механизм хранения B-дерева.
Если строка вставлена, то если для столбца не указано значение (например, INSERT INTO book (title,author, year, isbn) VALUES ('book1','The Author','1999','1234567890')
, тогда id будет равно 1 и обычно(но не обязательно) следующая вставленная строка будет иметь id , равный 2 и т. д.
Если после добавления некоторых строк вы используете SELECT * FROM book
, то строки будут упорядочены в соответствии с id , так как никакой другой индекс не указан / не используется.
Возможно, посмотрите на Таблицы Rowid .
Пример
Возможно рассмотрим следующий пример: -
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;
This: -
- DROP s книжный стол (чтобы его было легко перезапустить)
- CREATE s таблица книг.
- INSERT s 3 книги с id не указаныed (типичное)
- INSERT четвертая книга, но с указанием id из 100
- INSERT s и еще 3 книги(не то, что это будет 101-103, так как 100 - это самый высокий идентификатор перед вставками)
- INSERT последняя строка НО с определенным id из 10.
- SELECT s все строки со всеми упорядоченными столбцами из таблицы книги, так как не было указано ORDER BY в соответствии со скрытым индексом на основе идентификатора .ПРИМЕЧАНИЕ хотя идентификатор 10 был последним вставленным, это 4-я строка.
Результат
В Python: -
conn = sqlite3.connect("books.db")
conn.execute("DROP TABLE IF EXISTS book")
conn.execute("CREATE TABLE IF NOT EXISTS book (id INTEGER PRIMARY KEY,title text, author text, year integer, isbn integer)")
conn.execute("INSERT INTO book (title,author, year, isbn) "
"VALUES('book1','The Author','1999','1234567890'), "
"('book2','Author 2','1899','2234567890'), "
"('book3','Author 3','1799','3234567890');")
conn.execute("INSERT INTO book VALUES (100,'book10','Author 10','1999','4234567890'); --<<<<<<<<<< specific ID")
conn.execute("INSERT INTO book (title,author, year, isbn) VALUES ('book11','Author 11','1999','1234567890'),('book12','Author 12','1899','2234567890'),('book13','Author 13','1799','3234567890');")
conn.execute("INSERT INTO book VALUES (10,'book10','Author 10','1999','4234567890'); --<<<<<<<<<< specific ID")
cur = conn.cursor()
cur.execute("SELECT * FROM book")
for each in cur:
print("{0:<20} {1:<20} {2:<20} {3:<20} {4:<20}".format(each[0],each[1],each[2],each[3],each[4]))
conn.commit()
conn.close()
Результаты в: -
1 book1 The Author 1999 1234567890
2 book2 Author 2 1899 2234567890
3 book3 Author 3 1799 3234567890
10 book10 Author 10 1999 4234567890
100 book10 Author 10 1999 4234567890
101 book11 Author 11 1999 1234567890
102 book12 Author 12 1899 2234567890
103 book13 Author 13 1799 3234567890