Реляционные базы данных
Django прекрасно работает и с MySQL, PostgreSQL, SQLite, Oracle - все это реляционные базы данных.Реляционные - это значит relational, relation - отношения, в нашем случае отношения между таблицами в нашем случае.
В прошлом уроке мы создали простое Django приложение “houses” и подключили его к проекту. А сейчас начнем его настраивать и начнем с файла models.py, в котором мы определим структуру данных приложения.
models.py - отвечает за описание нашей будущей базы данных
Внутри его, создаем класс House унаследованный от models.Model
В терминах Django класс House называется моделью и модель House отвечает за конкретный дом, который мы будем продавать клиенту.
Начинаем заполнять нашу таблицу. Таблицы в ORM оформляются в виде классов.
class House(models.Model):
pass
Наши дома имеют определенные характеристики вроде:
- Цены
- Площади
- Материала изготовления
(переменные - колонки базы данных)
Создадим заголовок, первую колонку
name = models.CharField("название", max_length=200)
# CharField - подразумевает собой набор символов
# max_length=200 - максимальная длина символов в строке
Создадим еще одно поле price, во вторую колонку
price = models.IntegerField("цена")
# IntegerField - может принимать и хранить целые числа
# “цена” - русское название поля price
Добавим еще одно поле description типа TextField в третью колонку
# TextField - в отличии от CharField, может хранить тексты произвольной длинны (для больших массивов текстовой информации) и его не нужно ограничивать параметром max_lenght
descriptions = models.TextField(“описание”)
Дополнительно
# models.DateTimeField - используется для хранения даты публикации статьи, это формат хранения как времени так и даты
# models.DateField - хранит только дату
# models.IntegerField - хранит цифровые целочисленные значения
class Meta - включает в себя дополнительные свойства для нашей будущей таблицы.
Нас интересует название таблицы, мы не хотим, чтобы Django самостоятельно давал название нашей таблицы, по-этому мы описываем это в классе Meta. Его нужно поместить во внутрь класса House (sites -> dom_u_morya -> houses)
файл models.py
сlass House(models.Model):
class Meta():
db_table = "new_houses"
Более современные требования требует дополнительных параметров
class House(models.Model):
house_name = models.CharField("Название", max_length=200, default="")
house_price = models.IntegerField("Цена", default=0)
house_description = models.TextField("Описание", default="")
И так в нашей модели House есть три поля, которые описывают его структуру
Теперь нам нужно спроектировать модель и базу данных или иными словами создать таблицу в базе данных таблицу, которая будет соответствовать нашей модели. Django умеет работать с различными базами данных, но минимальная установка как у нас создает минимальную базу данных sqlite3, по этому мы и будем с ней работать.
Нажмем Ctrl+Alt+R и введем:
> makemigrations houses
Django создаст миграцию с номером 0001
Файлы миграции хранятся в каталоге migrations внутри приложения к которому они относятся, в данном случае houses
Вообще сама миграция это всего лишь инструкция о том, что нужно сделать с базой данных. Чтобы эта инструкция сработала, нужно применить миграцию
> migrate houses
Миграция применялась и теперь можно открыть и посмотреть нашу базу данных. В ней появится таблица houses_house с 4-мя колонками
Как открыть базу данных смотрим или читаем тут
id - это идентификатор, который содержит уникальный номер записи в таблице, Django создает его автоматически
Получается, что наша модель House, является отражением таблицы houses_house в базе данных и наоборот и создали мы ее без использования каких либо знаний о SQL запросов и знаний о базах данных.
ORM - Object Relational Mapping - это технология программирования, она связывает базу данных с объектно ориентированными концепциями языков. В нашем случае, ORM связывает таблицу houses_house c классом House.
Технология ORM - является одной из ключевых возможностей Django.
ORM - это некая система, которая позволяет обращаться к базе данных как к объектам класса. То есть мы создаем некий класс, в переменных этого класса мы описываем колонки таблицы и в дальнейшем обращаясь именно к этому классу, мы через ORM обращаемся к базе данных. Именно на базе этого класса, база данных создается фреймворком.
Ученика 11 класса нет в базе данних кто виноват?
ОтветитьУдалитьОтветьте пожалуйста