Подключение к базе данных PostgreSQL
В инфраструктуре Yandex Cloud разворачивать и поддерживать кластеры серверов PostgreSQL
Перед началом работы
- Создайте новый кластер Managed Service for PostgreSQL с публичным доступом для хоста. Вы можете использовать существующий кластер, содержащий хосты в публичном доступе.
- Настройте группы безопасности кластера.
-
Откройте проект DataSphere:
-
Выберите нужный проект в своем сообществе или на главной странице
DataSphere во вкладке Недавние проекты. - Нажмите кнопку Открыть проект в JupyterLab и дождитесь окончания загрузки.
- Откройте вкладку с ноутбуком.
-
Подключиться к хосту
Чтобы подключиться к хостам кластера Managed Service for PostgreSQL:
-
Получите SSL-сертификат. Для этого введите в ячейке ноутбука команду:
#!:bash mkdir ~/.postgresql wget "https://storage.yandexcloud.net/cloud-certs/CA.pem" -O ~/.postgresql/root.crt && \ chmod 0600 ~/.postgresql/root.crt
-
Установите подключение с БД. Для этого введите в ячейке ноутбука команду:
%pip install psycopg2-binary import psycopg2 conn = psycopg2.connect(""" host=<FQDN_хоста_PostgreSQL> port=6432 sslmode=verify-full dbname=<имя_БД> user=<имя_пользователя_БД> password=<пароль_пользователя_БД> target_session_attrs=read-write """) q = conn.cursor() q.execute('SELECT version()') print(q.fetchone())
Если подключиться к кластеру удалось, в ответ на тестовый запрос будет выведена версия PostgreSQL:
('PostgreSQL 14.6 (Ubuntu 14.6-201-yandex.52665.7e82983c2c) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0, 64-bit',)
Подключение без использования SSL-сертификата поддерживается только для хостов, находящихся не в публичном доступе. В этом случае трафик внутри облачной сети при подключении к БД шифроваться не будет.
-
Настройте проект. Для этого на странице редактирования проекта в соответствующих полях добавьте или измените:
-
Каталог по умолчанию, в котором развернут кластер Managed Service for PostgreSQL.
-
Сервисный аккаунт с ролью
managed-postgresql.editor
или выше. -
Подсеть, в которой расположен хост БД.
Примечание
Чтобы иметь доступ в интернет, указывайте подсеть с NAT-шлюзом.
-
-
Установите подключение с БД. Для этого введите в ячейке ноутбука команду:
%pip install psycopg2-binary import psycopg2 conn = psycopg2.connect(""" host=rc1a-<идентификатор_кластера_PostgreSQL>.mdb.yandexcloud.net port=6432 sslmode=disable dbname=<имя_БД> user=<имя_пользователя_БД> password=<пароль_пользователя_БД> target_session_attrs=read-write """) q = conn.cursor() q.execute('SELECT version()') print(q.fetchone()) conn.close()
Если подключиться к кластеру удалось, в ответ на тестовый запрос будет выведена версия PostgreSQL:
('PostgreSQL 14.6 (Ubuntu 14.6-201-yandex.52665.7e82983c2c) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0, 64-bit',)