Python 在开发环境中使用云SQL的Google应用程序引擎上的Django

Python 在开发环境中使用云SQL的Google应用程序引擎上的Django,python,mysql,django,google-app-engine,google-cloud-sql,Python,Mysql,Django,Google App Engine,Google Cloud Sql,我正在尝试使用GAE上的Django和CloudSQL作为db创建一个应用程序。 我使用它来设置开发环境。我无法连接到本地mysql数据库 这是我正在尝试使用的数据库设置 if (os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine') or os.getenv('SETTINGS_MODE') == 'prod'): DATABASES = { 'default': { 'ENGINE': 'go

我正在尝试使用GAE上的Django和CloudSQL作为db创建一个应用程序。
我使用它来设置开发环境。我无法连接到本地mysql数据库

这是我正在尝试使用的数据库设置

if (os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine') or
os.getenv('SETTINGS_MODE') == 'prod'):
DATABASES = {
    'default': {
        'ENGINE': 'google.appengine.ext.django.backends.rdbms',
        'INSTANCE': 'instance:appid',
        'NAME': 'database_name',
    }
}
else:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'USER': 'root',
            'PASSWORD': '',
            'HOST': 'localhost',
            'NAME': 'database_name',
        }
    }
我的应用程序在生产GAE上运行得很好,但是当我尝试在dev env上启动应用程序时,我遇到了这个错误

File "/home/sandeep/Downloads/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 635, in __init__
raise IOError(errno.EACCES, 'file not accessible', filename)
IOError: [Errno 13] file not accessible: '/usr/local/lib/python2.7/site-packages/MySQL_python-1.2.4-py2.7-linux-x86_64.egg'
the library "MySQLdb" is not supported
  in "/home/sandeep/development/UploadImage/src/app.yaml", line 14, column 1
在以下位置完成堆栈跟踪:

我通过下载源代码并运行“python setup.py install”安装了“python mysql”

编辑1
我还尝试将MySQLdb添加到库中

- name: MySQLdb
  version: "latest"
得到了这个错误

File "/home/sandeep/Downloads/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 635, in __init__
raise IOError(errno.EACCES, 'file not accessible', filename)
IOError: [Errno 13] file not accessible: '/usr/local/lib/python2.7/site-packages/MySQL_python-1.2.4-py2.7-linux-x86_64.egg'
the library "MySQLdb" is not supported
  in "/home/sandeep/development/UploadImage/src/app.yaml", line 14, column 1
编辑2
Django syncdb可以很好地使用此设置,Django可以为我创建表。但是,当我尝试通过“dev_appserver.py”运行时,我得到了上面的stacktrace。

我能够在开发环境中访问cloudSQL。

这应该可以像前面提到的那样工作。我不认为这段代码有什么问题

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': 'google.appengine.ext.django.backends.rdbms',
            'INSTANCE': 'your-project-id:your-instance-name',
            'NAME': 'django_test',
            'USER': 'root',
        }
    }
else:
    # Running in development, so use a local MySQL database.
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'django_test',
            'USER': 'root',
            'PASSWORD': 'root',
        }
    }
我也在django中使用了带有cloudsql的Google App Engine,以下是我在部署和本地开发中使用的设置,它工作得很好

在GAE中部署的设置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', 
        'HOST': '/cloudsql/instance:appid',
        'NAME': 'name_of_database',
        'USER': 'mysql_user',
    }
}
使用App engine sdk进行本地开发的设置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'name_of_database',
        'USER': 'mysql_user',
        'PASSWORD': 'pwd',
        'HOST': 'ip_address_of_cloudsql_instance',   # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
    }
}

您是否安装了python mysql库?您还需要将其包含在app.yaml文件中,请参见“是”,我已使用源代码安装了python mysql。是否必须将其添加到PYTHONPATH中?如果我将引擎更改为“google.appengine.ext.django.backends.rdbms”,则它可以访问live cloudSQL实例。我无法使用本地mysql安装django。从源代码?为什么不使用
pip
?我最初是使用apt-get安装的,但是python-c“import MySQLdb”失败了。所以我不得不使用源代码进行安装。我曾尝试使用django.db.backends.mysql进行本地安装,但不起作用。我觉得在GAE环境中无法访问python mysql模块。如果我尝试运行django应用程序,那么“django.db.backends.mysql”对我来说是可行的。@Sandeep有一个i/O错误
IOError:[Errno 13]文件不可访问:'/usr/local/lib/python2.7/site packages/MySQL\u python-1.2.4-py2.7-linux-x86\u 64.egg'
您可以检查运行此项目的用户对此文件的权限吗?-rwxr-xr-x 1 root staff 112570 Jan 8 06:06/usr/local/lib/python2.7/site-packages/MySQL\u python-1.2.4-py2.7-linux-x86\u 64.egg试图启动新的ubuntu设置安装了django、gae和python mysqldb。唯一的区别是,我使用源代码安装了python mysqldb,另一个来自apt get。我使用apt get remove删除并重新安装了python mysqldb,但仍然无法运行。@Sandeep您想在django中的GAE应用程序中使用本地mysql数据库进行本地开发,对吗?