django 1.4数据库路由器 - "无法导入名称连接"

Ant*_*nio 5 django sharding

我正在尝试在django上对我的数据库进行分片,但是我在第一步时遇到了奇怪的错误.

我做了一个简单的数据库路由器,没有任何东西:

'''file /myproject/myapp/routers.py'''
class ShardingRouter(object):

    def db_for_read(self, model, **hints):
        return 'default'

    def db_for_write(self, model, **hints):
        return 'default'

    def allow_relation(self, obj1, obj2, **hints):
        return 'default'

    def allow_syncdb(self, db, model):
        return 'default'
Run Code Online (Sandbox Code Playgroud)

我在settings.py中添加了:

DATABASE_ROUTERS = ['myproject.myapp.routers.ShardingRouter',]
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

Traceback (most recent call last):
    File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 219, in __call__
    self.load_middleware()
    File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 45, in load_middleware
    mod = import_module(mw_module)
    File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
    File "/hosting/myproject/myproject/middleware.py", line 10, in <module>
    from django.contrib.sites.models import Site
    File "/usr/local/lib/python2.7/dist-packages/django/contrib/sites/models.py", line 1, in <module>
    from django.db import models
    File "/usr/local/lib/python2.7/dist-packages/django/db/__init__.py", line 16, in <module>
    router = ConnectionRouter(settings.DATABASE_ROUTERS)
    File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 116, in __init__
    raise ImproperlyConfigured('Error importing database router %s: "%s"' % (klass_name, e))
ImproperlyConfigured: Error importing database router ShardingRouter: "cannot import name connection"
Run Code Online (Sandbox Code Playgroud)

'连接'是什么?这是什么意思?找不到,问题出在哪里((

Cés*_*sar 6

您需要导入connectionssettings.py:

from django.db import connections

...
...

DATABASE_ROUTERS = ['myproject.myapp.routers.ShardingRouter',]
...
...
Run Code Online (Sandbox Code Playgroud)

  • 这有帮助!但它只有在我在'DATABASES`声明之后放置此导入时才有效 (2认同)