Ошибка SQLAlchemy без пароля

Это, вероятно, глупая ошибка, но я не могу найти удовлетворительного решения.

При запуске db.create_all() я получил следующую ошибку.

sqlalchemy.exc.OperationalError: (OperationalError) fe_sendauth: no password supplied  None None

Моя ссылка для базы данных установлена ​​как

'postgresql://localhost/db_name'

Это отлично работало на моих Mac и Heroku, но на ubuntu (digitalocean) это не совсем нормально.

Любые идеи, что я могу делать неправильно?

Ответы

Ответ 1

Вероятно, вам просто нужно удалить "localhost" из строки подключения:

'postgresql:///db_name'

Это говорит psycopg2 использовать сокеты Unix-домена. Ваша конфигурация по умолчанию будет использовать "идентификатор", поэтому вы будете подключаться как пользователь, который запускает script. В конфигурации по умолчанию "md5" применяется только к соединениям TCP.

Ответ 2

На вашем Mac PostgreSQL был настроен для проверки подлинности trust или peer для соединений с localhost.

В вашем поле Ubuntu он настроен для проверки подлинности md5 для соединений с localhost.

Вам нужно настроить пароль или изменить режим проверки подлинности. См. pg_hba.conf, а руководство Ubuntu для PostgreSQL.

Ответ 3

Шаблон URL должен быть:

postgresql://user:[email protected]:5432/database_name

pip install psycopg2
пользователь должен быть postgres или любым другим пользователем, которого вы создали и собираетесь использовать

Аналогично для mySql это будет:

mysql://user:[email protected]:3306/database_name

pip install mysql-python