python - 如何通过代理自动连接到Cloud SQL?

标签 python mysql django google-app-engine proxy

我在 settings.py 中设置了 mySQL 数据库,如下所示:

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:”之后 但我不知道我要写什么......有什么想法吗?可能吗?

最佳答案

使用os.system从Python代码运行shell命令:

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

子进程:

subprocess.call(['./cloud_sql_proxy -instances=\"myApp:europe-west1:myApp-instance\"=tcp:3306'], shell=True)

关于python - 如何通过代理自动连接到Cloud SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54356772/

相关文章:

python - 如何使用asm代码为Python构建C库?

php - Flash 到 MySQL 数据库的简单安全方法

mysql - 在mysql中创建具有特定条件和排序顺序的子查询

php - 如何在 postCondition 方法中使用 BETWEEN mysql 运算符?

python - 你如何为 Flask 安装 MySQL?

python - 找到数组元素的所有可能组合。不是产品

python - pip freeze 在 Windows 安装中没有显示任何内容?

python - Django 投票应用程序 : Background Image Not Loading

python - Django 子查询先前记录的子集

database - 是否可以从数据库生成 Django 模型?