设置Django连接到Google Cloud SQL(MYSQL)
环境:
python2.7
GAE
Django1.5
目的:
将开发的Table反映到Google的数据库上。
然后上传到GAE生产环境时,可以正常使用数据库。
官方教程
https://cloud.google.com/appengine/docs/python/cloud-sql/django
设置数据库连接
Setting.py
import os
if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine'):
# Running on production App Engine, so use a Google Cloud SQL database.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '/cloudsql/your-project-id:your-instance-name',
'NAME': 'django_test',
'USER': 'root',
}
}
elif os.getenv('SETTINGS_MODE') == 'prod':
# Running in development, but want to access the Google Cloud SQL instance
# in production.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'INSTANCE': 'your-instance-ip-address',
'NAME': 'django_test',
'USER': 'root',
'PASSWORD': 'password',
}
}
else:
# Running in development, so use a local MySQL database.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_test',
'USER': 'root',
'PASSWORD': 'password',
}
}
其中第一段为在GAE服务器端的连接GAE数据库的执行代码。
第二段为本地直接连接到GAE数据库的代码。
第三段为本地连接本地数据库的代码。
下面具体设置第二段
elif os.getenv('SETTINGS_MODE') == 'prod':
# Running in development, but want to access the Google Cloud SQL instance
# in production.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': 'your-instance-ip-address', <- 关键字为HOST,设为数据库所在的IP地址
'NAME': 'django_test', <- 数据库名,需要在GAE上添加完毕
'USER': 'root', <- 在GAE上设置完毕可以从本地访问的用户
'PASSWORD': 'password', <- 密码
}
}
同步Table的步骤
- 在GAE上添加数据库,添加本地IP,设置可以从本地的访问
- 在GAE上设置可以从本地访问的用户,密码
- 本地设置环境变量 SETTINGS_MODE=prod
- 执行同步数据库 ./manage.py syncdb
执行完毕后,显示产生各个Table,将Django的Model反映到GAE的数据库上,
即可以现在使用GAE的数据库了。
上传到GAE服务器后,第一种方式也是可以正常使用了。