我正在尝试使用 CloudSQL 启动一个托管在 GAE 上的 Django 应用程序。在本地,我使用 Mac OSX Maverics,在 virtualenv 中工作(通过 virtualenvwrapper)。
安装适用于 Python 的 GAE SDK 后,我启动了虚拟环境,从 /usr/local/google_appengine/lib/django-1.5/ 安装了 Django 1.5
另外,在 appengine.google.com 上,我创建了一个新应用程序,并将 CloudSQL 实例连接到它(启用计费)。
我可以创建一个新的 Django 项目,例如django-admin.py startproject test01
,然后我编辑其 settings.py 以根据 Google 的说明更改数据库定义,例如:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '/cloudsql/myapp-test01:myapp-db-test01',
'NAME': 'test01',
'USER': 'test01',
}
}
我还根据 Google 文档将 app.yaml 添加到了项目文件夹的根目录中:
application: test01
version: 1
runtime: python27
api_version: 1
threadsafe: true
libraries:
- name: django
version: "1.5"
builtins:
- django_wsgi: on
这就是我遇到障碍的地方。
第一:数据库中的“名称”和“用户”字段到底应该输入什么?该文档没有详细说明。
其次,当我跑步时:python manage.py syncdb
要初始化应用程序,我得到:
OperationalError: (2002, "Can't connect to local MySQL server through socket '/cloudsql/desgn-test-01:db-test-01' (2)")
我确实安装了 MySQL,通过brew install mysql
(虽然我没有在虚拟环境中这样做),而且我也有MySQL-python。
我是 GAE 新手,对设置数据库相当缺乏经验,所以我不确定接下来要尝试什么。我不确定问题是否出在我的本地 MySQL 或 CloudSQL 连接设置上?
(关于 GAE 的更一般的 Django 问题:工作流程到底是什么?如果我的连接正常工作,是否意味着即使在本地开发 Django 应用程序时我也在使用 CloudSQL?随后如何将应用程序“推送”到AppEngine,或进行更新?我假设这是通过启动器完成的,但是使用 appengine.google.com 仪表板创建(添加)应用程序与在本地启动器中添加新应用程序之间有什么相关性?很困惑这——这两个应用程序是同一个应用程序吗,需要具有相同的名称,还是..?)