設置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服務器後,第一種方式也是可以正常使用了。