是否有一个我错过的步骤,也许是" syncdb" Google Cloud SQL的步骤?我读了这两个: Using Google Cloud SQL
我的应用程序可以访问Google Cloud SQL,但我想我只需要在Google Cloud SQL中创建表格。命令是做什么的?也许这会解决它。运行python manage.py syncdb
会更新localhost上的SQL,但我想在Google Cloud SQl上更新数据库。
编辑:以下是我的项目的Google Cloud SQL设置和settings.py。
答案 0 :(得分:0)
有三种类型的连接: 1)你的dev机器到你的本地mysql实例(简单!) 2)您的应用引擎实例(在Google Cloud中)到Google Cloud SQL实例(与文档中描述的方式相同) 3)你的dev机器到cloudql实例(硬盘):鼓励的方式是获得静态IP(一段时间不花费你很多钱),并使用IP连接cloudsql实例。
Django代码[3]应该允许你在上述情况之间切换。命令[1]允许您将syncdb同步到cloudsql实例。如果您希望django模型在cloudsql实例中操作数据,可以将config [2]添加到app.yaml
[1]
SETTING_MODE=prod ./manage.py syncdb
[2]
env_variables:
SETTINGS_MODE: prod
[3]
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',
'HOST': 'static-ip-of-cloudsql-instance',
'PORT': '3306',
'NAME': 'django_test',
'USER': 'username',
'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': 'root',
}
}