Переключиться с SQLite на postgres, postgres с запросом пароля - PullRequest
0 голосов
/ 13 февраля 2020

Две вещи, на которые стоит обратить внимание: во-первых, я выполняю эти команды с запущенной виртуальной средой. Таким образом, терминал отображается как (env):. Два, каждый раз, когда я пытался ввести su postgres, он спрашивал у меня пароль.

Я читаю книгу на Django (используя ма c), текст гласит: «Если вы используете macOS, скачайте PostgreSQL с https://www.postgresql.org/download/ и установите его. Вам также необходимо установить адаптер Psycopg2 PostgreSQL для Python. Для установки выполните следующую команду: pip install psycopg2==2.7.4. "

У меня уже было установлено postgres на моей машине, так как я ранее пытался развернуть сайт, прежде чем вернуться к этому примеру проекта, который я создал. Поэтому я не go на сайт и установить его. Я установил psycopg2 в соответствии с инструкциями ((env): pip install psycopg2==2.7.4.)

«Давайте создадим пользователя для нашей базы данных PostgreSQL. Откройте оболочку и выполните следующие команды: su postgres затем createuser -dP blog»

Я думал, что «открыть оболочку» означает ввести виртуальную оболочку python? Итак:

python manage.py shell

затем

su postgres

это не сработало, оно попросило у меня пароль. Вышел из оболочки, запустил ту же команду (env): su postgres, тот же результат.

Оттуда я подумал, может быть, так как я нахожусь в виртуальной среде, мне нужно заново загрузить postgres. Я запустил pip install postgres (не знал, загрузит ли это что-нибудь, но это произошло, поэтому я не стал заходить на сайт / также не знал, как установить его в этой среде с сайта). Обратите внимание, это установлено postgres, а также psycopg-someversion-binary. Теперь у меня установлена ​​psycopg2==2.7.4 и установлена ​​какая-то версия psycopg2-binary. Оттуда я бежал (env): su postgres (заметка из моего окружения). Тот же результат, он попросил пароль.

Затем я снова открыл интерактивную оболочку python с помощью python manage.py shell и снова запустил su postgres. Тот же результат.

В этот момент я попытался исследовать это самостоятельно. То, что я прочитал, говорит, что мне нужно запустить su - postgres из root (?), Введя sudo -i в терминале. Я сделал это, теперь я нахожусь на Justins-MBP:~ root# (это не похоже, что это вообще связано с проектом django, для которого я пытаюсь использовать postgres db). В любом случае, отсюда su - postgres и, как вы уже догадались, он попросил у меня пароль.

Любая помощь в том, как я могу правильно переключить БД, очень ценится.

Кроме того, набрав все это и подумав о том, что я сделал, я понял, что еще не изменил настройки базы данных проекта python. Но и книги нет, так что вы не уверены, как этот проект узнает об этой базе данных?

1 Ответ

1 голос
/ 13 февраля 2020

Возможно, вы еще не настроили пользователя root в MacOS, см. этот ТАК. Однако для получения дополнительной информации об использовании su см. этот ответ с ссылкой на технические заметки Apple о том, как создать один .

. это следует делать в вашем терминале macOS, потому что ваша настройка, настройка и выполнение действий с базой данных в базе данных Postrgre SQL, и это само по себе, как описывает ваша книга, не связано с Django (или * 1025). * в этом отношении).

Таким образом, вы должны убедиться, что 1) PostgreSQL установлена ​​на вашем устройстве и 2) что у вас запущен PostgreSQL (поскольку вы будете создавать пользователей, что на самом деле означает вставку данных в вашу PostgreSQL базу данных). В прошлом я использовал этот пост (не аффилированный) для настройки (установки, запуска и настройки) PostgreSQL на MacOS.

Что касается Django, вам нужно будет изменить DATABASES в своем settings.py (см. Также эту часть в Django руководстве)

DATABASES = {
    # default namespace
    'default': { 
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'dbname' #name of the database,
        'USER': 'username' #name of the created user,
        'PASSWORD': 'password',
        'HOST': '127.0.0.1' #when local,
        'PORT': '5432' #default psql port,
    }
}
...