Как настроить psycopg2 с базой данных Google App Engine PostgreSQL - PullRequest
0 голосов
/ 28 марта 2019

У меня есть приложение, которое запускается на Google App Engine, и я хочу, чтобы оно использовало связанную с ним базу данных PostgreSQL. Я использую psycopg2, чтобы помочь мне с моими запросами SQL. Однако я не уверен, как я могу установить соединение. Вот что у меня сейчас есть:

con = psycopg2.connect(
    host=HOST_NAME, # the IP address of the SQL database
    database=DATABASE_NAME, # the name of the database (I'm using the default, so this is "postgres"
    user=USER_NAME, # just the user name that I created
    password=PASSWORD # the password associated to that user
)

Однако, когда я пытаюсь сделать запрос, я получаю ошибку psycopg2.OperationalError: could not connect to server: Connection timed out при создании этого соединения. Есть ли что-то, что мне не хватает?

1 Ответ

0 голосов
/ 28 марта 2019

Это немного сложно, но вот что сработало для меня. Я помогу вам настроить Quickstart App Engine с помощью psycopg2, и после этого вы получите идею.

Используйте документацию Quickstart для Python в гибкой среде App Engine для настройки и развертывания приложения.

Используйте документацию Connecting из App Engine для подключения приложения App Engine к облачному SQL Postgre SQL.

Я сделал небольшие изменения, чтобы сделать эту работу:

В app.yaml добавить:

beta_settings:
  cloud_sql_instances: [INSTANCE_CONNECTION_NAME]=tcp:5432
#[INSTANCE_CONNECTION_NAME] = [PROJECT_NAME]:[INSTANCE_ZONE]:[INSTANCE_NAME]
#[INSTANCE_CONNECTION_NAME] can be found at Google Cloud Console Cloud SQL's instance page, under "Instance connection name".

В requirements.txt добавить:

psycopg2
psycopg2-binary

В main.py добавить:

@app.route('/connect')
def connect():
    try:
        #host='172.17.0.1' is the defult IP for the docker container that it is being created during the deployment of the App Engine
        conn = psycopg2.connect("dbname='postgres' user='postgres' host='172.17.0.1' password='test'")
        return "Connection was established!"
    except:
        return "I am unable to connect to the database"

Используйте команду gcloud app deploy для развертывания вашего приложения.

После развертывания используйте команду gcloud app browse, чтобы открыть приложение в браузере.

При доступе по ссылке https://[PROJECT_ID].appspot.com/connect Должен ответить Connection was established!

...