Подключение телеграмм бота к Heroku Postgres

Есть телеграмм бот, написанный на Python/aiogram, раннее использовал базу данных SQLite 3, потом понял, что Heroku поддерживает Postgresql, нужна помощь по установке бота на Heroku Postgres, готов даже заплатить, если нужно :)


Ответы (1 шт):

Автор решения: Violet

Согласно документации:

Используйте команду heroku addons для проверки подключённого аддона.

Если heroku-postgresql не отображается, CLI команда heroku addons:create heroku-postgresql:<PLAN_NAME> добавит аддон.

Бесплатный тариф (PLAN_NAME) - hobby-dev

После выполнения команды вы увидите примерно следующее:

Created postgresql-concave-52656 as DATABASE_URL

Обычно БД становится доступной к работе в течении 5 минут, вы так же можете отслеживать статус с помощью команды heroku pg:wait, которая блокируется, пока ваша база данных не будет готова к использованию.

DATABASE_URL содержит URL-адрес, который ваше приложение использует для доступа к базе данных.

Вы можете проверить имена и значения переменных конфигурации вашего приложения с помощью heroku config

Значение переменной DATABASE_URL конфигурации вашего приложения может измениться в любое время. Вы не должны полагаться на это значение ни внутри, ни за пределами вашего приложения Heroku.

На этом этапе создается пустая база данных PostgreSQL. Чтобы заполнить его данными из существующего источника данных, см.Инструкции по импорту или следуйте инструкциям для конкретного языка в этой статье, чтобы подключиться из вашего приложения.

Приложения Heroku используют DATABASE_URL для обозначения URL-адреса первичной базы данных приложения. Если ваше приложение имеет только одну базу данных, ее URL-адрес автоматически назначается этой переменной конфигурации.

Вы можете совместно использовать одну базу данных Heroku Postgres между несколькими приложениями с помощью heroku addons:attach:

heroku addons:attach my-originating-app::DATABASE --app sushi
Attaching postgresql-addon-name to sushi... done
Setting HEROKU_POSTGRESQL_BRONZE vars and restarting sushi... done, v11

Чтобы использовать PostgreSQL в качестве базы данных в приложениях Python, вам необходимо использовать psycopg2.

pip install psycopg2-binary

И используйте этот пакет для подключения DATABASE_URL в своем коде.

import os
import psycopg2

DATABASE_URL = os.environ['DATABASE_URL']

conn = psycopg2.connect(DATABASE_URL, sslmode='require')
→ Ссылка