Добавление данных¶
Предположим мы создали базу данных, но возникает проблема...
Что бы работать с базой данных, нужно чтобы в ней что-то было!
Поэтому самое время познакомиться с новым методом!
метод insert()¶
Метод, добавляющий в таблицу новую запись.
В качестве параметров принимает названия полей и их значения.
Пример добавления записи
table.insert(field1=value1, field2=value2)
Перейдем к нашей таблице Points
и добавим в неё пару точек.
Код v1¶
Мы будем модифицировать этот код.
from data_base import Points, Position
points = Points(db_path=':memory:')
points.create_table()
points.insert(
position=Position(4, 5.5), color='black', size=1
)
points.insert(
position=Position(5, 6.5), color='black', size=1
)
Разберёмся что произошло.
Импортируем описание таблицы и новый тип данных, создаем соединение описания с базой данных, а так же создаем таблицу.
from data_base import Points, Position
points = Points(db_path=':memory:')
points.create_table()
points.insert(
position=Position(4, 5.5), color='black', size=1
)
points.insert(
position=Position(5, 6.5), color='black', size=1
)
Примечание
Создание таблицы в базе данных необходимо в нашем случае, так как мы храним базу данных в оперативной памяти.
Добавляем в таблицу новую точку, которая имеет свойства:
- Находится на координатах 4;5.5
- Окрашена в черный цвет
- Размер точки: 1
from data_base import Points, Position
points = Points(db_path=':memory:')
points.create_table()
points.insert(
position=Position(4, 5.5), color='black', size=1
)
points.insert(
position=Position(5, 6.5), color='black', size=1
)
Добавляем в таблицу новую точку, которая имеет свойства:
- Находится на координатах 5;6.5
- Окрашена в черный цвет
- Размер точки: 1
from data_base import Points, Position
points = Points(db_path=':memory:')
points.create_table()
points.insert(
position=Position(4, 5.5), color='black', size=1
)
points.insert(
position=Position(5, 6.5), color='black', size=1
)
Код v2¶
Если сравнить эти точки, то можно заметить,
что они одинакового размера и цвета.
Можно ли сократить этот маленький код? — Да, можно.
Посмотрим на описание таблицы:
class Points(Table):
position: Position
color: str = 'black'
size: int = 1
Видим что поля color
и size
имеют значения по умолчанию.
А теперь смотрим какими свойствами обладают точки,
которые мы добавили, и осознаём что указали такие же значения.
Исходя из этого меняем наш код.
from data_base import Points, Position
points = Points(db_path=':memory:')
points.create_table()
points.insert(position=Position(4, 5.5))
points.insert(position=Position(5, 6.5))
Этот код добавит в базу данных такие же точки, как и пред идущая версия кода.
Интересный факт
Если бы мы указали значение по умолчанию для поля position
,
то мы могли бы создавать новые точки используя строку:
points.insert()
Код v3¶
Давайте добавим больше различных точек.
from data_base import Points, Position
points = Points(db_path=':memory:')
points.create_table()
points.insert(position=Position(4, 5.5))
points.insert(position=Position(5, 6.5))
points.insert(position=Position(0, 0), color='red')
points.insert(position=Position(-1, 1.2), size=2)
points.insert(position=Position(2, -2), color='blue', size=3)
Не забывайте
При добавлении записей в базу данных, значения полей необходимо передавать того же типа, что при описании таблицы
points.insert(position=Position(4, 5.5))