Как подключиться к экземпляру SQL в Google Cloud Platform, используя Python3 в App Engine - PullRequest
1 голос
/ 14 апреля 2020

Я пытаюсь подключиться к экземпляру SQL с платформы Google Cloud в приложении для облачного приложения Google, которое я создаю с помощью python3. Мой main.py код выглядит следующим образом (с использованием тестовой базы данных), и моя цель - отобразить полную таблицу результатов, когда приложение направлено на страницу «запросов». Однако запуск приложения вызывает ошибку «502 Bad Gateway nginx». Что я делаю неправильно? Заранее большое спасибо.

from flask import Flask, render_template, redirect, url_for, request
import sqlalchemy

# If `entrypoint` is not defined in app.yaml, App Engine will look for an app
# called `app` in `main.py`.
app = Flask(__name__)

@app.route('/')
@app.route('/home')
def home():
    return render_template('home.html')


@app.route('/queries/', methods=['GET', 'POST'])
def queries():
    # 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='admin',
        password='admin',
        database='studentlist',
        query={"unix_socket": "/cloudsql/{}".format('PROJECTNAME:europe-west1:student')},
    ),
    # ... Specify additional properties here.
    # ...
    )

    with db.connect() as conn:
        all_results = conn.execute(
            "SELECT * FROM student.studentlist"
        ).fetchall()

    return all_results

Мой файл app.yaml:

runtime: python37

# [START handlers]
handlers:
- url: /static
  static_dir: static

env_variables:
    MYSQL_DSN: mysql:unix_socket=/cloudsql/INSTANCE_CONNECTION_NAME;dbname=student
    MYSQL_USER: admin
    MYSQL_PASSWORD: admin

1 Ответ

0 голосов
/ 14 апреля 2020

Я написал подробное руководство по подключению к облаку SQL из App Engine, используя python. Я надеюсь, что это поможет!

https://github.com/mvladoi/GCS-python/blob/master/Connect%20from%20App%20Engine%20to%20Cloud%20Sql%20using%20TCP%20and%20Unix%20domani%20sockets

Я бы рекомендовал указать точку входа:

 entrypoint: uwsgi --http-socket :8080 --wsgi-file main.py --callable app --master --processes 1 --threads 2

Также проверьте наличие ошибок развертывания:

  gcloud app logs read

Код подключения, который вы опубликовали, в порядке, но я думаю, что запрос должен быть SELECT * FROM studentlist

...