Джанго - База данных

{title}

Как только модель установлена ​​и все, что с ней связано, необходимо учитывать следующий аспект - как различные поля взаимодействуют с базой данных.
Говоря о поведении базы данных, мы говорим о том, как мы должны увидеть, как данные готовятся к хранению, как мы проводим сравнения с типами данных Python, с которыми их значения представлены в Наше приложение в Джанго .
db_type (self, connection)
Этот метод редко перезаписывается классами и подклассами приложений, он возвращает строку, содержащую определенные данные базы данных, которыми они управляют, при создании столбцов определенных полей.
Важно отметить, что значение, возвращаемое этим методом, является специфическим для серверной части базы данных, используемой в приложении, поэтому, если мы решим использовать ее в проектах с различными серверными базами данных, мы должны получить значение подключения, используя connection.settings_dict [ «МОТОР»]
Давайте посмотрим на следующем рисунке, как мы можем зафиксировать в коде основное использование этого метода:

{title}


Анализируя код, мы видим, что если ядром базы данных является postgreSQL, мы будем возвращать значение для поля, отличное от того, является ли оно другим движком, таким как MySQL, поэтому мы можем увидеть небольшой пример полезности этого метода.
get_prep_value (self, value)
Это метод, который служит основой для других методов, которые должны подготовить данные для использования базой данных.
В большинстве случаев преобразование объектов Python в более простые данные, которые могут быть переданы в базу данных, не представляет серьезной проблемы, и мы можем использовать стандартное преобразование, однако, когда мы хотим сделать более сложные преобразования, такие как тип даты Мы можем использовать этот метод, чтобы позаботиться об этой работе, на следующем рисунке у нас есть способ достичь этого, который мы описали.

{title}


В примере при определении типа поля DurationField мы перезаписываем метод get_prep_value (), чтобы он взял объект даты и преобразовал его в десятичные значения, чтобы его можно было без проблем использовать в базе данных.
get_db_prep_value (само, значение, соединение, подготовлено = False)
В некоторых случаях наше приложение работает на более чем одном ядре базы данных, для этого этот метод позволяет нам подготовить данные на основе этого движка, благодаря connection.settings_dict ['ENGINE'] мы можем включить различные случаи в соответствии с двигатель
Например, когда мы работаем с postgreSQL, этот движок может напрямую обрабатывать объекты даты, поэтому, если мы обнаружим, что это оно, мы можем передать значение напрямую, давайте посмотрим в примере ниже, как мы комбинируем этот метод и предыдущий для достижения результата более надежный:

{title}


На этом мы заканчиваем урок, зная, что можем управлять поведением базы данных в Django, используя методы подготовки данных полей модели.

  • 0