Использование psycopg2 непосредственно в Google AppEngine - PullRequest
0 голосов
/ 27 июня 2018

При использовании Google Appengine Flexible + Python, как использовать Psycopg2 напрямую (без SQLAlchemy) для доступа к базе данных CloudSQL PostgreSQL?

1 Ответ

0 голосов
/ 27 июня 2018

Привет myselfhimself,

Вот решение:

  1. в вашем app.yaml, добавьте переменную среды, имитирующую URI документации SQLAlchemy в документации Google Appengine Flexible Python CloudSQL, но без префикса psycopg2+:
env_variables:
    PSYCOPG2_POSTGRESQL_URI: postgresql://user:password@/databasename?host=/cloudsql/project-name:region:database-instance-name
  1. в любом файле python, который нужно развернуть и запустить, передайте эту переменную среды непосредственно в оператор psycopg2 connect. Это усиливает способность psycopg2.connect передавать URI напрямую клиентской библиотеке psql (это может не работать со старыми версиями PostgreSQL ..).
import os
import psycopg2
conn = psycopg2.connect(os.environ['PSYCOPG2_POSTGRESQL_URI'])
  1. при локальной работе с облачным прокси-инструментом Google сначала установите переменную среды URI, если ваш локальный сервер не знает о app.yaml:
export PSYCOPG2_POSTGRESQL_URI="postgresql://user:password@/databasename?host=/cloudsql/project-name:region:database-instance-name"
./cloud_sql_proxy -instances=project-name:region:database-instance-name=tcp:5432
#somewhat later:
python myserver.py

Надеюсь, это сработает и у вас:)

...