Пришедшие из PHP в Python или, скорее, из MySQL в PostgreSQL немного удивляются очевдным неочевидностям работы с этой базой данных. Тут, как говорится, у кого что было вначале.
У кого в начале был Mysql - было просто: create database, create table. Можно работать.
В PostgreSQL неофита ждет сюрприз, ибо, как в анекдоте про различие стран или, скорее, менталитетов - в Постгрес запрещено все, кроме того что разрешено.
Поэтому начальная настройка состоит из нескольких простых действий и одного неочевидного.
Я не буду сейчас копировать стандартный мануал с командной строкой Linux, который начинается с
sudo -u postgres psql
а разберу типичный случай со стороны DBA.
Итак, вы можете залогиниться ...э-э... закконектиться с базой от имени суперпользователя - юзера с именем postgres, у вас есть консоль для выполнения SQL команд и вы хотите создать базу для нового проекта.
ДА, проект Django, это имеет значение потому что другие действия ORM Django выполнит само, а так, хорошо бы по красоте еще задействовать что-то со словом schema и тому подобное. Но, повторюсь, мы не будем даже создавать таблицу - все сделает ORM
Итак, открываем консоль и выполняем - можно пошагово, а можно и все сразу:
создадим пользователя проекта:
CREATE USER postgresuser WITH password 'PGUserPass';
создадим базу проекта:
CREATE DATABASE django_pg_db;
дадим все права над базой этому пользоваетелю:
GRANT ALL PRIVILEGES ON DATABASE django_pg_db TO postgresuser;
и вот без вот этой последней строчки у вас ничего не заработает - в иные времена ее поиски могли занять несколько часов, даже сейчас GPT системы не очень-то часто упоминают эту подсказку:
ALTER DATABASE django_pg_db OWNER TO postgresuser;
все! далее подключаете Джанго, make migrations, ,migrate - все будет работать.
Это - то самое неочевидное действие, о котором я писал вначале. Дело в том что много мануалов бевшовно переходят в роль postgresuser и остальное делают от его имени, потому просто пользователь с ошибкой сталкивается нечасто, но стоит вам вести несколько проектов или баз - это проявится.
Что еще? Еще можно и нужно добавить за репликацию - будет отдельный пост, и, может, за работу Джанго с двумя (и более) базами данных - само собой, РАЗНЫМИ базами данных - например MariaDB и PostreSQL - одновременно. Про это тоже будет пост.
Комментарии
Отправить комментарий