Google Cloud SQL - могу ли я напрямую обращаться к базе данных с помощью SQLAlchemy, а не локально - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь получить прямой доступ к Google Cloud SQL и создать там таблицу. Я хочу использовать как можно меньше сервисов (будьте проще), поэтому я действительно не хочу использовать Cloud SDK. Я хочу использовать нечто подобное, что я видел здесь . Я пытался воспроизвести его, но в результате я получил ошибку.

AttributeError: module 'socket' has no attribute 'AF_UNIX'

Для всего этого я использую Python с sqlalchemy & pymysql

Я действительно не знаю, как его отладить, поскольку я использую его первые несколько часов, но я думаю, что проблема может быть связана с URL-адресом или переменными среды (файл app.yamp, который я создал). Я думаю, что я уже установил все зависимости, которые мне нужны

db_user = os.environ.get("db_user")
db_pass = os.environ.get("db_pass")
db_name = os.environ.get("db_name ")
cloud_sql_connection_name = os.environ.get("cloud_sql_connection_name ")

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)
        }
     ),
     pool_size=5,
     max_overflow=2,
     pool_timeout=30,
     pool_recycle=1800,
)

with db.connect() as conn:
     conn.execute(
         "CREATE TABLE IF NOT EXISTS votes "
         "( vote_id SERIAL NOT NULL, time_cast timestamp NOT NULL, "
         "candidate CHAR(6) NOT NULL, PRIMARY KEY (vote_id) );"
)

Я не использую db_user и т. Д. В качестве реальных значений. Это всего лишь примеры. Должно пройти успешно и создать таблицу в Google SQL

1 Ответ

2 голосов
/ 20 июня 2019

Могу ли я напрямую обращаться к базе данных с помощью SQLAlchemy - не локально

Вы указываете сокет unix /cloudsql/{}.Для этого необходимо настроить прокси-сервер Cloud SQL на локальном компьютере.

Чтобы получить прямой доступ к Cloud SQL, вам потребуется указать публичный IP-адрес для Cloud SQL.При вызове функции sqlalchemy.engine.url.URL укажите параметры хоста и порта и удалите параметр запроса.

...