Найти в Дзене
Kitchen Python 3

Кухня Python 3: "Sqlite3: Insert и Select"

Продвигаемся дальше по варке и изучению рецептов с SqlLite3 в Python 3. Сейчас мы разберемся в добавлении записей в базу INSERT и выборкой из неё SELECT. Всё не так страшно на данном этапе, ссылки на прошлые рецепты Вы можете найти в ссылках в низу статьи. ВНИМАНИЕ: Сервис удаляет начальные пробелы в строках, поэтому приходится использовать символ нижнего подчеркивания вместо каждого пробела. И я буду предоставлять скриншоты общего кода для наглядности Ингредиенты: Python 3 Библиотека sqlite3 PyCharm добавьте по вкусу Приготовление: 1. Сперва подключите библиотеку sqlite3 import sqlite3 2. Добавьте список юзеров, который мы будем добавлять в базу list_users = [('Михаил','Рогов','14.06.1992'), ('Митрофан','Иванов','06.03.1996'), ('Ольга','Смирнова','01.04.1991'),
('Олег','Кузнецов','12.12.1990'), ('Андрей','Морозов','16.07.1988'), ('Екатерина','Козлова','07.11.1996'),
('Юрий','Орлов','21.04.1990'), ('Алексей','Лебедев','12.02.1987'),('Трифан','Сергеев',
Оглавление

Продвигаемся дальше по варке и изучению рецептов с SqlLite3 в Python 3. Сейчас мы разберемся в добавлении записей в базу INSERT и выборкой из неё SELECT. Всё не так страшно на данном этапе, ссылки на прошлые рецепты Вы можете найти в ссылках в низу статьи.

ВНИМАНИЕ: Сервис удаляет начальные пробелы в строках, поэтому приходится использовать символ нижнего подчеркивания вместо каждого пробела. И я буду предоставлять скриншоты общего кода для наглядности

Ингредиенты:

Python 3

Библиотека sqlite3

PyCharm добавьте по вкусу

Приготовление:

1. Сперва подключите библиотеку sqlite3

import sqlite3

2. Добавьте список юзеров, который мы будем добавлять в базу

list_users = [('Михаил','Рогов','14.06.1992'), ('Митрофан','Иванов','06.03.1996'), ('Ольга','Смирнова','01.04.1991'),
('Олег','Кузнецов','12.12.1990'), ('Андрей','Морозов','16.07.1988'), ('Екатерина','Козлова','07.11.1996'),
('Юрий','Орлов','21.04.1990'), ('Алексей','Лебедев','12.02.1987'),('Трифан','Сергеев','05.05.1994')]

-2

Пояснение: ('Михаил','Рогов','14.06.1992') - это кортеж записей. Мы будем его использовать для удобства ввода, потому что можно и по отдельности вносить каждую запись, но я спрошу - "Зачем?", если можно добавить сразу все данные. И в дальнейшем он нам пригодится, когда мы будем делать другие операции с БД(Базой данных)

Кортеж(tulpe) - это неизменяемый список.

3. Подключите базу данных и создайте таблицу с полями id INTEGER PRIMARY KEY AUTOINCREMENT, name text, family text, date_born text

conn = sqlite3.connect("MyDB.db")
cursor = conn.cursor()
cursor.execute("CREATE TABLE if not exists users (id INTEGER PRIMARY KEY AUTOINCREMENT, name text, family text, date_born text)")

4. Циклом for переберите все кортежи в списке list_users и добавьте записи в базу

for names in list_users:
____cursor.execute("INSERT INTO users(name, family, date_born) VALUES (?,?,?)", names)

-3

Пояснение: users(name, family, date_born) - добавление в таблицу users полей name, family, date_born значений ?,?,?, которые мы подставляем из кортежа names. Не забывайте, что он перебирает сам все значения, если вы вместо кортежа подставите обычную строку, к примеру "Зэн", то он разобьет ее на ("З", "э","н"). А указав больше символов, то и вовсе выпадет ошибка.

5. Примите изменения commit() и сделайте выборку SELECT.

conn.commit()
cursor.execute("SELECT id, name, family, date_born FROM users")
row_list = cursor.fetchall()

Пояснение: Вместо id, name, family, date_born можно использовать *, так как мы делаем выборку всех полей, но советую так не делать, ибо * проще, но при больших запросах, многих таблиц, "машине" понадобиться больше времени на реализацию алгоритма. Так как он не сразу будет делать выборку, а сначала прогонит цикл полей. Разница же есть?

cursor.fetchall() = возвращает список нашего запроса

6. И наконец, выведите на экран результат и закройте БД

print(row_list)
conn.close()

Готовое блюдо:

import sqlite3
list_users = [('Михаил','Рогов','14.06.1992'), ('Митрофан','Иванов','06.03.1996'), ('Ольга','Смирнова','01.04.1991'),
('Олег','Кузнецов','12.12.1990'), ('Андрей','Морозов','16.07.1988'), ('Екатерина','Козлова','07.11.1996'),
('Юрий','Орлов','21.04.1990'), ('Алексей','Лебедев','12.02.1987'),('Трифан','Сергеев','05.05.1994')]
conn = sqlite3.connect("MyDB.db")
cursor = conn.cursor()
cursor.execute("CREATE TABLE if not exists users (id INTEGER PRIMARY KEY AUTOINCREMENT, name text, family text, date_born text)")
for names in list_users:
____cursor.execute("INSERT INTO users(name, family, date_born) VALUES (?,?,?)", names)
conn.commit()
cursor.execute("SELECT id, name, family, date_born FROM users")
row_list = cursor.fetchall()
print(row_list)
conn.close()

-4

Ссылки:

Подключение базы модуля SqLite3 и создание таблиц

-5