как просмотреть django psql бэкэнд из командной строки - PullRequest
1 голос
/ 24 января 2020

Я разрабатываю веб-сайт с Django 3 (в контейнере docker), используя postgres sql в качестве бэкэнда; то есть в файле настроек проекта я имею:

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

Я заполнил базу данных бэкэнда и могу просматривать данные с помощью администратора. Однако я хотел бы подключиться к базе данных через командную строку, чтобы мне было проще тестировать запросы. Я попытался подключиться к базе данных обычным способом из командной строки:

sudo -u postgres psql
postgres=# \c postgres

Проблема в том, что данные не найдены:

postgres=# \dt
Did not find any relations.

, так как я новичок в docker Я подумал попробовать соединить и другие пути; в частности, основываясь на другом посте, который я попробовал:

sudo docker run -d -p 5432 -t postgres/postgresql /bin/su postgres -c '/usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf'

Это выдает ошибку:

pull access denied for psql/postgresql, repository does not exist or may require 'docker login'

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

Ответы [ 2 ]

3 голосов
/ 24 января 2020

Неправильно использовать postgres для имени базы данных, поскольку для обслуживания по умолчанию используется база данных postgres, которую сам по умолчанию PostgreSQL использует. Я бы порекомендовал вызвать базу данных как my_project, затем создать учетную запись пользователя службы my_project_user и назначить пароль:

sudo -u postgres psql
postgres=# CREATE USER my_project_user WITH PASSWORD 'blahblah';
postgres=# CREATE DATABASE my_project WITH OWNER my_project_user;
postgres=# \q

Обновите соответствующие настройки Django DATABASES["default"] и запустите миграции. После выполнения миграций вы можете получить доступ к базе данных Django с помощью следующей команды управления:

python manage.py dbshell

Возможно, вы сможете выполнить указанную выше команду с текущей настройкой, но у вас могут возникнуть проблемы с использованием postgres как имя вашей базы данных. Удачи!

0 голосов
/ 24 января 2020

ОБНОВЛЕНИЕ, мой файл docker -compose.yml имел следующую службу:

db:
        image: postgres:11
        volumes:
                - postgres_data:/var/lib/postgresql/data/

Я могу подключиться к Django бэкэнду, используя следующую команду:

sudo docker-compose exec db psql -U postgres
postgres=# \c postgres

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...