django 1.4数据库路由器 - “无法导入名称连接” [英] django 1.4 database router - "cannot import name connection"

查看:196
本文介绍了django 1.4数据库路由器 - “无法导入名称连接”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在django上分割我的数据库,但是在第一步上我有一个奇怪的错误。



我做了一个简单的db路由器,那个dous没有:

 '''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'

我添加在settings.py: / p>

  DATABASE_ROUTERS = ['myproject.myapp.routers.ShardingRouter',] 
pre>

我收到此错误:

 追溯(最多最近的电话最后):
文件/usr/local/lib/python2.7/dist-packages/django/core/handlers/wsgi.py,第219行, __call__
self.load_middleware()
文件/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py,第45行,在load_middleware
mod = import_module(mw_module)
文件/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py,第35行,import_module
__import __(name)
文件/hosting/myproject/myproject/middleware.py第10行在< module>
from django.contrib.sites.models import Site
文件/usr/local/lib/python2.7/dist-packages/django/contrib/sites/models.py,第1行, <模块>
从django.db导入模型
文件/usr/local/lib/python2.7/dist-packages/django/db/__init__.py,第16行在< module>
router = ConnectionRouter(settings.DATABASE_ROUTERS)
文件/usr/local/lib/python2.7/dist-packages/django/db/utils.py,第116行,__init__
raise不正确配置('导入数据库路由器%s时出错%s:%s'%(klass_name,e))
不正确配置:导入数据库路由器时出错ShardingRouter:无法导入名称连接

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

解决方案

您需要导入 settings.py 中的连接

 从django.db导入连接

...
...

DATABASE_ROUTERS = ['myproject.myapp.routers.ShardingRouter',]
...
...


I'm trying to shard my database on django, but I've got strange error on a first steps.

I made a simple db router, that dous nothing:

'''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'

I added in settings.py:

DATABASE_ROUTERS = ['myproject.myapp.routers.ShardingRouter',]

I'm getting this error:

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"

What 'connection'? What does it mean? Can't find, where is the problem((

解决方案

You need to import connections in your settings.py:

from django.db import connections

...
...

DATABASE_ROUTERS = ['myproject.myapp.routers.ShardingRouter',]
...
...

这篇关于django 1.4数据库路由器 - “无法导入名称连接”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆