Подключение postgresql к django windows

Обновлено: 07.07.2024

Допустим, есть у нас такая ситуация, что проект на Django установлен а использованием локальной БД SQLite и нам необходимо это все экспортировать в реляционную БД на примере PostgreSQL.

Реляционные системы управления базами данных являются ключевым компонентом многих веб-сайтов и приложений. Они обеспечивают структурированный способ хранения, организации и доступа к информации.

Установка и настройка PostgreSQL на Ubuntu

Репозитории Ubuntu по умолчанию содержат пакеты Postgres, поэтому их можно установить с помощью apt-системы. Перед этим обновим свой локальный индекс пакета. Затем установим пакет Postgres вместе с пакетом -contrib, который добавит некоторые дополнительные утилиты и функции

Командная строка терминала теперь будет начинаться с postgres@yourserver.

Теперь заходим в режим команд SQL и интерфейса PostgreSQL

Создаем пользователя для БД проекта

Мы устанавливаем кодировку по умолчанию для UTF-8, которую ожидает Django. Мы также устанавливаем схему изоляции транзакций по умолчанию «read commit», которая блокирует чтение из незафиксированных транзакций. Наконец, мы устанавливаем часовой пояс. По умолчанию наши проекты Django будут настроены на использование UTC

Теперь все, что нам нужно сделать, это предоставить нашим пользователям права доступа к базе данных, которую мы создали

Выходим из режима ввода SQL, чтобы вернуться к сеансу оболочки postgres

Выходим из сеанса оболочки postgres, чтобы вернуться к сеансу оболочки обычного пользователя

Настройка проекта Django на использование

PostgreSQL

Теперь, когда наша база данных настроена, мы можем установить Django. Для большей гибкости мы установим Django и все его зависимости в виртуальной среде Python

Создание и настройка виртуальной среды

Создаем виртуальную среду для хранения зависимостей Python проекта Django, набрав команду

Это установит локальную копию Python и pip[pip3] в каталог myprojectenv

Прежде, чем создать проект Django нужно сначала активировать виртуальную среду, которую мы создали шагом выше

После этой команды строка запроса будет похожа на (myprojectenv)user@host.

В окружении проекта устанавливаем пакеты Django и psycopg2, который является бэкэндом для PostgreSQL

Замечение. Тут еще один момент, связанный с psycopg2. Начиная с версии 2.8 данный пакет будет переименован в psycopg2-binary и поэтому нужно дополнительно установить данный пакет с этим названием

В противном случае, может возникнуть предупреждение такого рода

Дополнительно про это можно узнать по ссылке.

Создание и настройка проекта Django

Теперь мы можем запустить проект Django в нашей директории myprojectenv. Это создаст дочерний каталог с именем проекта myproject , в котором будет еще одна папка с тем же названием для хранения самого кода и создаст сценарий управления в текущем каталоге. Не забудьте добавить точку в конце команды, чтобы она была правильно настроена

Теперь нам надо отредактировать файл настроек myproject/myproject/settings.py проекта на то, чтобы проект, вместо базы SQLite, который стоит по умолчанию начал работать с базой Postgre, который мы выше настроили и для этого открываем этот файл настроек и ищем там строки

и заменяем это все на

Сохраняем и закрываем этот файл.

Миграция баз данных на использование Postgre и запуск проекта

Теперь, когда настройки Django настроены, мы можем перенести наши структуры данных в нашу базу данных и протестировать сервер.

После создания структуры базы данных мы можем создать учетную запись администратора проекта, набрав

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

На этом интеграция и запуск закончена. Остается любоваться результатом через адрес сервера и порт 8001, на котором запущен наш проект Django с БД Postgree

Импорт данных из SQLite в PostgreSQL

в проекте Django

Окей. Выше мы рассмотрели, как интегрировать проект Django с Postgre, но что если в SQLite есть уже данные, которые нужно перенести в Postgre SQL?

Выгружаем существующие данные из SQLite, причем, в настройках settings.py нужно настроить на использование SQLite

Изменяем settings.py на использование Postgres backend. Выше мы это уже рассматривали как делать.

Убедитесь, что вы можете подключиться к PostgreSQL. Затем

Подключение PostgreSQL к Django

Приветствую! В прошлой статье мы выполнили деплой приложения Django на сервере с операционной системой Ubuntu 20.04. В этой статье мы продолжим эту инструкцию, а именно установим и подключим мощную и функциональную базу данных PostgreSQL к нашему Django приложению.

По-умолчанию Django использует базу данных SQLite, но это не самый лучший вариант для хранения информации. Поэтому работать мы будем именно с PostgreSQL.

1. Добавление PPA

PostgreSQL - популярный сервер баз данных и он имеется в официальных репозиториях. Но мы хотим использовать самую последнюю версию программы. Для этого нужно добавить в систему PPA (Personal Package Archive) с помощью команд:

2. Обновляем пакеты

3. Устанавливаем PostgreSQL

На момент написания статьи последней актуальной версий являлась PostgreSQL-12. Проверить последнюю версию можно на официальном сайте БД. В случае обновления можно просто заменить версию в команде, например, sudo apt install postgresql-13.

4. Открываем консоль PostgreSQL

5. Задаем пароль для администратора БД

6. Создадим суперпользователя

Создадим и настроим пользователя, при помощи которого будем соединяться с базой данных из Django (делать все через суперпользователя - не самая хорошая идея). Также укажем значения по умолчанию для кодировки, уровня изоляции транзакций и временного пояса. Вводим поочередно следующие команды:

Здесь hostgeek_db - это имя пользователя, а testpassword18 - пароль. Указывайте свои индивидуальные значения.

7. Создаем базу данных для нашего проекта

Здесь first_db - это название базы данных, а hostgeek_db - имя пользователя, который был создан в предыдущем пункте.

8. Выходим из консоли PostgreSQL команой:

9. Активируем виртуальное окружение (если оно не активировано)

Подробно об этом было расписано в прошлой статье по деплою Django. Активируется виртуальное окружение командой:

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

10. В виртуальное окружение проекта устанавливаем бэкэнд для PostgreSQL

11. Отредактируем файл настроек Django

Полностью удаляем раздел DATABASES = <. >и заменяем на следующий код:

12. Перезапускаем Gunicorn

Для активизации этих изменений нужно перезапустить Gunicorn. Для этого вводим команду:

Жмем F4 (Filter) и вводим слово gunicorn. Так мы из общей массы отсортируем только процессы Gunicorn. Жмем на клавиатуре стрелку вниз и "киляем" все процессы поочередным нажатием клавиш F9 - 1 (SIGHUP) - Enter. Как видно, после "убийства" процессов они тут же запускаются автоматически, значит все работает правильно

Процессы Gunicorn

Выходим из htop нажатием клавиши F10.

13. Выполним миграцию базы данных

Перейдем в папку

/myapps/parser/siteparser (папка, в которой лежит файл manage.py):

Выполним команду миграции БД:

Миграция базы данных Python

14. Создадим суперпользователя Django

Под этим пользователем мы будем авторизовываться в админ-панели Django.

Создание суперпользователя базы данных Django

15. Перезапускаем Gunicorn (повторяем пункт 12 этой статьи)

16. Авторизуемся в админке

Админка Django без стилей

Для подключения стилей откроем конфигурационный файл Nginx:

Добавим в него следующий код и сохраним файл:

После этого админка будет отображаться корректно:

Админка Django с подключенными стилями

На этом подключение базы данных PostgreSQL к фреймворку Django завершено. В следующей статье разберем настройку Memcached.

Если у вас возникли какие-либо вопросы по этой статье, то задавайте их в комментариях, мы обязательно ответим. Спасибо за внимание!

Разработка сайта на Django - урок 03: миграция с SQLite в PostgreSQL

Разработка сайта на Django - урок 03: миграция с SQLite в PostgreSQL

Разработка сайта на Django - урок 03: миграция с SQLite в PostgreSQL

В предыдущем уроке мы провели миграцию для создания модели слайдера. Сейчас мы продолжим, но нам надо перейти с SQLite на PostgreSQL.

Для работы Django с PostgreSQL надо установить psycopg2

Создание страницы в Django - 001

Далее, так как часть наших данных уже есть в SQLite, то надо сделать копию этих данных, для переноса в базу данных PostgreSQL.

python manage.py dumpdata > db.json

Этой командой мы создаем файл db.json

Создание страницы в Django - 002

После этого нам надо настроить подключение к базе данных PostgreSQL в файле settings.py.

Создание страницы в Django - 003

Потом производим следующие команды:

python manage.py migrate

python manage.py loaddata db.json

Создание страницы в Django - 004

Можете проверить работоспособность после этого, все работает. Теперь идем дальше.

В прошлый раз мы закончили с созданием модели слайдера в файле models.py. По сути модель Slider представляет собой таблицу, с полями: name, title, description, slideimg, которые представляют собой поля в таблице. Это можно посмотреть 2-мя способами.

1 способ - это зайти в саму базу PostgreSQL

Создание страницы в Django - 005

2 способ - это подключить PyCharm к базе. Подключение осуществляется следующим образом

Создание страницы в Django - 006

Создание страницы в Django - 007

Создание страницы в Django - 008

После этого таблицы можно просматривать в PyCharm

Создание страницы в Django - 009

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

Расширим нашу модель слайдера валидацией полей, этот момент не сильно много разбирается в других статьях, но просто приведу пример использования, чаще всего именно его не хватает.

from django.db import models
from django.core.validators import MaxLengthValidator

После того, как доступ к серверу с Ubuntu 16.04 был настроен в одной из предыдущих статей , настало время развернуть на нём всё необходимое для работы сайта, а именно:

Шаг 1 - обновление системы

Сделаем обновление существующих пакетов. Мало ли, система имеет устаревшие пакеты.

Шаг 2 - Установка всех необходимых пакетов без установки виртуального окружения

Установим пачкой все необходимые пакеты, которые не будут использоваться через virtualenv, а именно Python 3, PostgreSQL, Nginx.

Pip я в итоге устанавливал отдельно через утилиту easy_install3 , которая идёт в комплекте python3-setuptools , во-первых потому, что тогда ставится последняя версия, а вторых в случае установки через apt-get были ошибки при установке пакетов в virtualenv.

Шаг 3 - Создание базы данных и пользователя базы данных

А теперь создадим базу данных и пользователя, дав расширенные права пользователю postgres через утилиту sudo, который создаётся при установке PostgreSQL.

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

Создадим базу данных:

Далее настройка пользователя проекта. Кодировку он будет использовать UTF8, поскольку данная кодировка используется и Django, а Python файлы рекомендует хардкодить с кодировкой UTF8, особенно, если в них присутствует текст, который будет отображаться на страницах сайта. Также устанавливается уровень изоляции в базе данных. То есть когда будут доступны данные для чтения. В данном случае после подтверждения транзакции в общем случае. Конечно, имеются случаи, когда данные доступны до подтверждения, но это отдельная тема для разговора. А также устанавливается тип временных зон, который для Django по умолчанию UTC.

Далее дадим права доступа к базе данных для этого пользователя:

Ну и выйдем из консоли PostgreSQL.

Если возникнут проблемы с кодировками на сервере, когда сервер будет иметь кодировку LATIN1, а базу данных нужно создать в UTF8, то обратитесь к следующей статье , где эта задача решается.

Шаг 4 - Установка виртуального окружения

Установим и активируем виртуальное окружение:

Шаг 5 - Установка драйвера PostgreSQL

Произведём установку следующей командой

Внутри виртуального окружения необходимо пользоваться командой pip , а не pip3

Шаг 6 - Создание проекта

Перейдём в папку с виртуальным окружением, мы по-прежнему должны находиться в режиме работы в виртуальном окружении. И создадим проект.

Шаг 7 - Настройка подключения к базе данных

А теперь отредактируем конфигурационный файл Django, чтобы он подключался к базе данных PostgreSQL, а не создавал и в дальнейшем подключался к базе данных SQLite.

Для этого найдите в файле следующий кусок кода:

И замените его следующим, с учётом ваших данных для подключения к базе данных:

Шаг 8 - Выполнение миграций базы данных

Django обладает одним очень большим преимуществом - он имеет встроенную админку, что очень облегчает жизнь. Но чтобы она заработала, необходимо выполнить миграцию базы данных, то есть подготовить из моделей данных SQL запросы, которые сформируют структуру базу данных.

А ещё создадим суперпользователя, который будет администратором с максимальными правами доступа к вашему сайту. Выполните следующую команду и следуйте инструкциям.

Шаг 9 - Установка Gunicorn

Можете проверить, что сайт уже работает:

Шаг 10 - Настройка статических файлов

Django по умолчанию отдаёт статические файлы только в Debug режиме, который не используется на боевом сервере. Для боевого сервера все статические файлы из всех проектов собираются в отдельную специальную папку с помощью команды collectstatic , а саму папку необходимо указывать в файл settings.py.

И добавим строку, которая будет указывать, куда собирать статические файлы.

А теперь соберём всю статику в данный каталог:

Шаг 11 - Настройка Nginx

Отредактируем конфигурационный файл Nginx.

Удалим всё его содержимое и замени следующим.

И запустим gunicorn

После этого вы обнаружите, что сайт доступен уже на порту 80.

Шаг 12 - Настройка supervisor

Для того, чтобы сайт был доступен в любое время суток, необходимо настроить supervisor, который висит в памяти как служба и будет следить, чтобы сайта всегда работал.

Для стабильной работы Gunicorn необходимо создать его конфигурационный файл. Он будет располагаться рядом с файлом, который будет запускаемым для нашего web-приложения.

Добавим следующую конфигурационную информацию:

То есть мы указали, к какому порту привязываемся, и какой пользователь запускает процесс. А также количество рабочих процессов. В данном случае их три. Рассчитывается по следующей формуле:

workers = N cpu + 1

После чего создадим конфигурацию самого supervisor

Пропишем в него следующие настройки

А теперь запустим supervisor. Есть один нюанс при установке supervisor. Он не стартанул в качестве службы после того, как был установлен. Поэтому нужно принудительно добавить его в автозагрузку и запустить вручную, если не хотите перезагружать сервер.

Ну а дальше можно обновлять конфиги, проверять статус приложения сайта и его перезапуска.

При перезагрузке сервера всё будет стартовать автоматически

Примечание

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

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

Читайте также: