Python 谷歌应用程序引擎上的Django数据库引擎

Python 谷歌应用程序引擎上的Django数据库引擎,python,django,google-app-engine,Python,Django,Google App Engine,我尝试在我的应用程序引擎上更改我的数据库引擎时遇到了一些问题 现在我使用“google.appengine.ext.django.backends.rdbms”,它工作正常,但运行缓慢 使用以下各项的区别是什么: “google.appengine.ext.django.backends.rdbms”或 “django.db.backends.mysql” 我的settings.py中有以下内容: DATABASES = { 'default': { 'ENGINE':

我尝试在我的应用程序引擎上更改我的数据库引擎时遇到了一些问题

现在我使用“google.appengine.ext.django.backends.rdbms”,它工作正常,但运行缓慢

使用以下各项的区别是什么:

“google.appengine.ext.django.backends.rdbms”或 “django.db.backends.mysql”

我的settings.py中有以下内容:

DATABASES = {
    'default': {
        'ENGINE': 'google.appengine.ext.django.backends.rdbms',
        'INSTANCE': 'xenon-notch-461:madplanuge',
        'NAME': 'madplanuge',
    }
}
当我尝试将数据库引擎更改为:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '/cloudsql/xenon-notch-461:madplanuge',
        'NAME': 'madplanuge',
        'USER': 'root',
    }
}
我在appengine上看到服务器错误,appengine的日志显示:

回溯(最近一次呼叫最后一次):

文件“/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py”,第267行,在Handle中
结果=处理程序(dict(自我环境)、自我启动响应)
文件“/base/data/home/apps/s~xenon-notch-461/2.38241358316680585/libs/django/core/handlers/wsgi.py”,第236行,在__
self.load_中间件()
文件“/base/data/home/apps/s~xenon-notch-461/2.382411358316680585/libs/django/core/handlers/base.py”,第49行,在load_中间件中
mod=导入模块(mw模块)
文件“/base/data/home/apps/s~xenon-notch-461/2.3824133 58316680585/libs/django/utils/importlib.py”,第35行,在导入模块中
__导入(名称)
文件“/base/data/home/apps/s~xenon-notch-461/2.38241358316680585/libs/django/contrib/auth/middleware.py”,第3行,在
从django.contrib.auth.backends导入RemoteUserBackend
文件“/base/data/home/apps/s~xenon-notch-461/2.38241358316680585/libs/django/contrib/auth/backends.py”,第3行,在
从django.contrib.auth.models导入权限
文件“/base/data/home/apps/s~xenon-notch-461/2.38241358316680585/libs/django/contrib/auth/models.py”,第8行,在
从django.db导入模型
文件“/base/data/home/apps/s~xenon-notch-461/2.38241358316680585/libs/django/db/__init__.py”,第40行,in
后端=加载\后端(connection.settings \ dict['ENGINE'])
文件“/base/data/home/apps/s~xenon-notch-461/2.38241358316680585/libs/django/db/_init__uuuuuuuu.py”,第34行,在__
返回getattr(连接[默认\u DB\u别名],项)
文件“/base/data/home/apps/s~xenon-notch-461/2.382411358316680585/libs/django/db/utils.py”,第93行,在__
后端=加载\u后端(db['ENGINE'])
文件“/base/data/home/apps/s~xenon-notch-461/2.38241358316680585/libs/django/db/utils.py”,第27行,在load_后端
返回导入_模块('.base',后端_名称)
文件“/base/data/home/apps/s~xenon-notch-461/2.3824133 58316680585/libs/django/utils/importlib.py”,第35行,在导入模块中
__导入(名称)
文件“/base/data/home/apps/s~xenon-notch-461/2.38241358316680585/libs/django/db/backends/mysql/base.py”,第17行,在
raise配置不正确(“加载MySQLdb模块时出错:%s”%e)
配置不正确:加载MySQLdb模块时出错:这是MySQLdb版本(1,2,5,'final',1),但_mysql是版本(1,2,4,'beta',4)

何时使用任一模块取决于您的环境。您可以在App Engine中找到有关如何为您的工作环境使用备用数据库的更多详细信息

基本上,django.db.backends.mysql模块允许在生产环境中运行的django应用程序与生产环境中的Google Cloud SQL实例通信

另一方面,google.appengine.ext.django.backends.rdbms后端在开发人员工作站上运行并访问生产云SQL实例时使用

上述文件的摘录

  • 在生产环境中运行并访问生产Google Cloud SQL实例时,请使用标准的django.db.backends.mysql
  • 在开发人员工作站上运行并访问本地mysql实例时,请使用标准的django.db.backends.mysql。在这种情况下,应用程序使用系统MySQLdb驱动程序
  • 在开发人员工作站上运行并访问生产云SQL实例时,请使用自定义后端google.appengine.ext.django.backends.rdbms

是的,错误似乎与MySQLdb模块的错误版本有关。

我认为这是由于mysql版本造成的。请尝试在yaml文件中提供mysql版本。在my app.yaml文件中可能存在以下Im的副本:-名称:MySQLdb版本:最新
  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 267, in Handle
    result = handler(dict(self._environ), self._StartResponse)
  File "/base/data/home/apps/s~xenon-notch-461/2.382413358316680585/libs/django/core/handlers/wsgi.py", line 236, in __call__
    self.load_middleware()
  File "/base/data/home/apps/s~xenon-notch-461/2.382413358316680585/libs/django/core/handlers/base.py", line 49, in load_middleware
    mod = import_module(mw_module)
  File "/base/data/home/apps/s~xenon-notch-461/2.382413358316680585/libs/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/base/data/home/apps/s~xenon-notch-461/2.382413358316680585/libs/django/contrib/auth/middleware.py", line 3, in <module>
    from django.contrib.auth.backends import RemoteUserBackend
  File "/base/data/home/apps/s~xenon-notch-461/2.382413358316680585/libs/django/contrib/auth/backends.py", line 3, in <module>
    from django.contrib.auth.models import Permission
  File "/base/data/home/apps/s~xenon-notch-461/2.382413358316680585/libs/django/contrib/auth/models.py", line 8, in <module>
    from django.db import models
  File "/base/data/home/apps/s~xenon-notch-461/2.382413358316680585/libs/django/db/__init__.py", line 40, in <module>
    backend = load_backend(connection.settings_dict['ENGINE'])
  File "/base/data/home/apps/s~xenon-notch-461/2.382413358316680585/libs/django/db/__init__.py", line 34, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "/base/data/home/apps/s~xenon-notch-461/2.382413358316680585/libs/django/db/utils.py", line 93, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/base/data/home/apps/s~xenon-notch-461/2.382413358316680585/libs/django/db/utils.py", line 27, in load_backend
    return import_module('.base', backend_name)
  File "/base/data/home/apps/s~xenon-notch-461/2.382413358316680585/libs/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/base/data/home/apps/s~xenon-notch-461/2.382413358316680585/libs/django/db/backends/mysql/base.py", line 17, in <module>
    raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
ImproperlyConfigured: Error loading MySQLdb module: this is MySQLdb version (1, 2, 5, 'final', 1), but _mysql is version (1, 2, 4, 'beta', 4)