Как автоматически подключиться к Cloud SQL через прокси? - PullRequest
0 голосов
/ 25 января 2019

У меня база данных MySQL установлена ​​в settings.py так:

if os.getenv('GAE_APPLICATION', None):
    # Running on production App Engine, so connect to Google Cloud SQL using
    # the unix socket at /cloudsql/<your-cloudsql-connection string>
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '/cloudsql/myApp:europe-west1:myApp-instance',
            'NAME': 'myApp',
            'USER': 'myApp',
            'PASSWORD': 'myApp', }}
else:
    # Running locally so connect to either a local MySQL instance or connect to
    # Cloud SQL via the proxy. To start the proxy via command line:
    #
    #     $ ./cloud_sql_proxy -instances="myApp:europe-west1:myApp-instance"=tcp:3306
    #
    # See https://cloud.google.com/sql/docs/mysql-connect-proxy
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST': '127.0.0.1',
            'PORT': '3306',
            'NAME': 'myApp',
            'USER': 'myApp',
            'PASSWORD': 'myApp', }}

Когда я хочу запустить myApp локально, я должен сначала запустить на терминале следующую команду:

./cloud_sql_proxy -instances="myApp:europe-west1:myApp-instance"=tcp:3306

и это очень раздражает ... есть способ интегрировать его в мой код?

Например, я бы добавил что-то в мои настройки, чтобы автоматически запускать команду, сразу после 'else:' Но я не знаю, что мне написать ... есть идеи? Возможно ли это?

1 Ответ

0 голосов
/ 29 января 2019

используйте os.system для запуска команды оболочки из кода Python:

os.system('./cloud_sql_proxy -instances=\"myApp:europe-west1:myApp-instance\"=tcp:3306')

или subprocess:

subprocess.call(['./cloud_sql_proxy -instances=\"myApp:europe-west1:myApp-instance\"=tcp:3306'], shell=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...