Django和Google Cloud SQL不存在DatabaseError表

时间:2015-06-23 02:03:48

标签: python django google-app-engine google-cloud-storage google-cloud-sql

是否有一个我错过的步骤,也许是" syncdb" Google Cloud SQL的步骤?我读了这两个: Using Google Cloud SQL

Django Support

我的应用程序可以访问Google Cloud SQL,但我想我只需要在Google Cloud SQL中创建表格。命令是做什么的?也许这会解决它。运行python manage.py syncdb会更新localhost上的SQL,但我想在Google Cloud SQl上更新数据库。

编辑:以下是我的项目的Google Cloud SQL设置和settings.py。 Google Cloud SQL settings settings.py

1 个答案:

答案 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',
        }
    }