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

时间:2015-02-22 10:48:26

标签: 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',
        '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的日志说:

追踪(最近一次呼叫最后一次):

  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)

1 个答案:

答案 0 :(得分:2)

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

基本上, django.db.backends.mysql 模块使生产中运行的Django应用程序能够与生产的Google Cloud SQL实例进行通信。

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

摘自上述文件。

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

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