Продвинутый Django 5 для продолжающих

Прогресс по курсу:  0/193

2.1 Структура и поля моделей, создание проекта
5 из 5 шагов пройдено

Django ORM (Object Relational Mapping) - это мощный инструмент, который позволяет разработчикам работать с базой данных в Python. Он предоставляет удобный интерфейс для работы с данными и позволяет использовать объектно-ориентированный подход в работе с базой данных.


Создание нового проекта

Сначала создайте новый проект Django с именем django_orm:

django-admin startproject django_orm


Во-вторых, создайте приложение hr внутри проекта django_orm:

python manage.py startapp hr


В-третьих, зарегистрируйте приложение hr в списке INSTALLED_APPS в файле settings.py:

INSTALLED_APPS = [
    # ...
    'hr',
]


Настройка сервера базы данных PostgreSQL

Сначала установите сервер базы данных PostgreSQL на свой локальный компьютер. Установку PostgreSQL мы подробно рассмотрели в курсе "Django 4 для начинающих" в разделе 7.10.


Теперь войдите на сервер базы данных PostgreSQL. Он запросит у вас пароль пользователя postgres. Обратите внимание, что вы используете тот же пароль, который вы ввели для postgres пользователя во время установки.

 

CREATE USER hr WITH PASSWORD 'xxxxxx';
CREATE DATABASE hr OWNER hr ENCODING 'UTF8';


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

Сначала настройте подключение к базе данных в файле settings.py проекта django_orm:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'hr',
        'USER': 'hr',
        'PASSWORD': 'xxxxxxx',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

Примечание: Обратите внимание, что вам необходимо заменить значение PASSWORD на свой пароль.


Вам также необходимо установить PostgreSQL-адаптер Psycopg 3 для Python. Выполните следующие ниже команды в командной оболочке, для этого:

pip install --upgrade pip           # upgrade pip
pip install "psycopg[binary]"


Посмотреть документацию на Psycopg 3 можно на официальной странице https://www.psycopg.org/psycopg3/docs/index.html.


  • Комментария
Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий

Все разделы выложены полностью или нет?

@Ислам, да, все.

Илья, как подключиться к бд на сервере через ssh - туннель?

@Анастасия_Иванникова, заходите на сервер по ssh, а затем запускаете psql -h localhost -U username, где username это имя пользователя БД, под которым будете работать.

@Дмитрий_Селезнев, а в settings надо что-то вместо ssl прописывать?
DATABASES = {

'default': { 'ENGINE': 'django.db.backends.postgresql', '

NAME': 'postgresql', - имя бд (у меня по умолнчанию)

'USER': 'postgresql', - имя пользователя (у меня по умолнчанию)

'PASSWORD': 'password', - пароль при входе в субд

'HOST': '', IP_Удаленного_хоста,

'PORT': '5432' ,

'OPTIONS': {'sslmode': 'require'} } }

@Анастасия_Иванникова, вы хотите использовать внешнюю базу в этом проекте через ssh - туннель?

@Дмитрий_Селезнев, нет, у меня по работе есть бд на сервере, подключена к ней локально на dbeaver, пытаюсь протестировать подключение к ней у себя локально, потом перенести на сервер на голое  железо (проект уже частично перенесен). Проблема в том, что подключение к бд на серваке идет через ssh - туннель, команду psql -h localhost -U username, где username попробовала, жду пароля от разраба, который сейчас спит) Подскажите пожалуйста, что в settings прописать? и нужна ли команда ниже для установки ssh соединения?

ssh -L <local port>:127.0.0.1:<remote port> <username>@<remote host> -N
Изменен Анастасия Иванникова

@Анастасия_Иванникова, по итогу я делаю проект по работе, работаю на Django впервые) До этого был опыт создания проекта на django локально через unit -тестирование ( и то с ментором)  )  В DBA естественно, не шарю)

@Дмитрий_Селезнев

Изменен Анастасия Иванникова

это уже на проде, задача - дергать из продовской бд sql - запросы, нажимая на кнопки в календаре, получать отчет в xls -формате (это думаю сделать через pandas (прикрутить его к django orm) Морду написала на js

@Анастасия_Иванникова, я понял что необходимо. Для начала необходимо установить соединение с сервером через ssh, например так:

ssh -L 5555:localhost:5432 пользователь@хост_бд -N

После подключения, удалённую БД можно использовать на локальном порту 5555, именно это надо вводить в настройки Django:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgresql',
        'USER': 'postgresql',
        'PASSWORD': 'xxxxxx',
        'HOST': 'localhost',
        'PORT': '5555',
    }
}

И при использовании psql точно так-же:

psql -h localhost -p 5555 -U postgresql

@Дмитрий_Селезнев, спасибо огромное!) Попробую, отпишусь обязательно!)