Создать движок (SQLalchemy) для базы данных GCP в скрипте Python - PullRequest
0 голосов
/ 17 мая 2019

Я хочу, чтобы мой скрипт на Python считывал данные из базы данных GCP, но я не знаю, как установить соединение.

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

from sqlalchemy import create_engine
engine = create_engine('postgresql://postgres:password@localhost:5432/django_app')    
data = pd.read_sql_query('select * from "ABC"', con=engine)

базовый макет для подключения к локальной базе данных:

dialect+driver://username:password@host:port/database

но как я могу сделать то же самое с базой данных, расположенной на GCP. Нужно ли передавать имя моего экземпляра вместо localhost?

Ответы [ 4 ]

2 голосов
/ 20 мая 2019
engine = create_engine('postgresql://postgres:password@<public IP address>/postgres')    
0 голосов
/ 21 мая 2019

Чтобы подключиться к базе данных postgres, необходимо выполнить следующие действия, если она установлена ​​на экземпляре виртуальной машины Google Cloud Platform:

  1. Войдите на console.cloud.google.com ивыберите проект, содержащий экземпляр вашей виртуальной машины с базой данных.
  2. Откройте главное меню сверху слева и выберите Параметры сети -> Сеть VPC -> Правила брандмауэра .
  3. Создайте новое правило брандмауэра с помощью кнопки в верхней части страницы.
  4. Дайте правилу некоторое имя, например, postgres и в поле Протоколы и порты , выберите tcp и введите номер порта как 5432 (поскольку вы используете порт по умолчанию, упомянутый в вашем посте) и создайте его.
  5. Потяните вниз главное меню слева вверхуи перейдите к Compute -> Compute Engine -> Экземпляры виртуальной машины .
  6. На показанной странице Экземпляры виртуальной машины запишите Внешний IP для экземпляра, в котором находится ваша база данных..
  7. Нажмите на свою виртуальную машину встойку, а затем нажмите кнопку «Изменить» сверху.
  8. В поле Сетевые теги добавьте имя правила, указанное в шаге 4 выше, а именно.postgres и сохраните изменения.
  9. Теперь запустите экземпляр виртуальной машины (может потребоваться выполнить шаг 6., чтобы еще раз проверить Внешний IP , если вы не используете статический Внешний IP )
  10. Теперь вы сможете подключиться к вашей базе данных, используя:

engine = create_engine('postgresql://postgres:password@<external_ip_noted_in_point9>:5432/django_app')

0 голосов
/ 20 мая 2019

Мы можем подключиться к нему, просто заменив host:port публичным IP-адресом

engine = create_engine('postgresql://postgres:password@<public IP address>/postgres')    
# dialect+driver://username:password@publicIPaddress/database
0 голосов
/ 20 мая 2019

вы можете следовать этой документации и ниже является ее частью.

# The SQLAlchemy engine will help manage interactions, including automatically
# managing a pool of connections to your database
db = sqlalchemy.create_engine(
    # Equivalent URL:
    # mysql+pymysql://<db_user>:<db_pass>@/<db_name>?unix_socket=/cloudsql/<cloud_sql_instance_name>
    sqlalchemy.engine.url.URL(
        drivername='mysql+pymysql',
        username=db_user,
        password=db_pass,
        database=db_name,
        query={
            'unix_socket': '/cloudsql/{}'.format(cloud_sql_connection_name)
        }
    ),
    # ... Specify additional properties here.
    # ...
}

https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/cloud-sql/mysql/sqlalchemy/main.py

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