如何在Google Cloud SQL上运行Django管理命令

9

目前,我已经将我的Django项目部署在Google App Engine上。我需要运行python manage.py migrate命令,以便在我的Google Cloud实例上创建auth_user表。但是不知道在哪里运行此命令。


通常情况下,您只需通过ssh登录到服务器并在bash中运行命令,但我不知道如何在Google-app-engine上运行。如果这是您的第一个django应用程序,您会发现有更多关于部署到Heroku或像DigitalOcean这样的vps的文档和指南。 - Håken Lid
@HåkenLid 这怎么可能? - Avinash Raj
1
@HåkenLid,我找不到关于如何ssh进入gae项目的链接。我在这一步真的卡住了。 - Avinash Raj
1
我也不知道。这就是为什么我建议使用不同的托管平台。或者你可以使用djangoappengine?http://djangoappengine.readthedocs.org/en/latest/index.html 看起来它使得从本地开发安装运行远程管理命令成为可能,例如:manage.py remote migrate - Håken Lid
传统的AppEngine VM还是托管VM?你只能通过SSH连接到托管VM实例。 - Igor Artamonov
1个回答

10
如果我没理解错的话,你的应用运行在App Engine(沙盒环境)上并使用Cloud SQL。
1)如下所示,在settings.py中配置你的数据库。
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/project-id:instance-name',
            'NAME': 'database-name',
            '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': 'cloud-sql-instance-ip-address',
            'NAME': 'database-name',
            'USER': 'root',
            'PASSWORD': 'password',
        }
    }
else:
    # Running in development, so use a local MySQL database.
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'database-name',
            'USER': 'username',
            'PASSWORD': 'password',
        }
    }

2) 将环境变量 SETTINGS_MODE 设置为 prod(或者如果要访问本地的 MySQL 服务器,则不设置)。

3) 从您的计算机运行以下命令。

$ SETTINGS_MODE=prod python manage.py migrate

您可以在App Engine文档中找到更多详细信息 - 管理命令备用开发数据库和设置


我正在使用Django 1.9,我不得不使用HOST而不是INSTANCE - Bianca Rosa
谢谢你分享这个..对我来说效果非常好。我使用了这个技巧来解决在Google App Engine灵活环境上运行迁移的问题。 - kenju254
嗨。我似乎无法使其工作。而且到目前为止,我找到的唯一可理解和可行的解决方案。我的唯一问题是第二步“将环境变量SETTINGS_MODE设置为prod”-这很令人困惑。我在哪里设置它?在app.yaml中(已经尝试过了)?在Google控制台的某个地方(已经查找并尝试找到我可以的地方..)?还是在settings.py中(但对我来说没有太多意义)?任何信息都会有所帮助。提前致谢。 - CarmenA
这与'dev_appserver'相比如何?(文档:https://cloud.google.com/appengine/docs/standard/python3/testing-and-deploying-your-app) - Brendan Metcalfe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接