python - GAE Django cloudsql 套接字

标签 python django google-app-engine mysql-python

我正在尝试在 Google 应用引擎上设置一个 django 项目,但我似乎无法从我的计算机连接到数据库来执行诸如syncdb 等操作。

这是我的配置(已更改)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '/cloudsql/something:else',
        'NAME': 'db_name',
        'USER': 'db_user',
    }
}

现在与数据库的连接可以在已部署的应用程序上运行,但当我从我的一端运行它时,我得到的错误是

Can't connect to local MySQL server through socket '/cloudsql/something:else'

我正在运行 osx,显然我安装了 google cloud sdk 以及应用程序引擎 SDK,我不确定我缺少什么。

谢谢

最佳答案

无法连接到它,因为您的本地环境无法识别主机 /cloudsql/something:else,这只能在生产环境中识别。

您可以按照这些方法使其在开发和生产环境中运行。

在生产和本地中使用相同的生产 Cloud SQL 实例

首先,您必须转到 Google Cloud Console授予对您当前 IP 的访问权限。

授予访问您当前 IP 的权限

  1. 转到 Cloud SQL 控制台,点击您的实例名称。
  2. 点击“编辑”按钮
  3. 在“分配 IP 地址”中,选择“分配 IP 地址”
  4. 在“授权 IP 地址”下面,添加您的开发计算机上的 IP 地址。

数据库设置

然后使用如下设置:

#!/usr/bin/env python
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'root',
        'PASSWORD': '<your-database-password>',
        'HOST': '<your-database-ip>',
        'NAME': '<your-database-name>',
    }
}

为生产和开发服务器使用单独的不同数据库

您可以单独设置生产服务器和本地开发服务器:

if os.getenv("SERVER_SOFTWARE", "").startswith("Google App Engine"):
    # production
    DATABASES = {
        # production database settings
    }
else:
    # local dev server
    DATABASES = {
        # local database settings
    }

关于python - GAE Django cloudsql 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22788770/

相关文章:

python - 如何用字符串的字符创建一个列表?

java - GAE/J 数据存储 : how to build an IN query with JDO

python - 从列表python的单个列表中删除子列表

python - 有条件地填写 Pandas 数据框

django - 保存扩展的用户配置文件

python - 具有浮点形式输入的django整数模型字段

java - 如何在Google应用程序引擎中为Java生成唯一的ID

python - 谷歌应用引擎/WSGIApplication : How to check debug?

python - 有什么方法可以与谷歌协作中的 matplotlib 图形交互吗?

python - 为什么 celery 周期性任务不起作用?