python - Django 数据库路由器无法导入名称连接

标签 python database django

我对 Django 1.4(python 2.6)上的数据库路由器有疑问。我已按照文档(https://docs.djangoproject.com/en/dev/topics/db/multi-db/#automatic-database-routing)进行操作,但是当我运行我的服务器时,出现以下错误消息:

django.core.exceptions.ImproperlyConfigured: Error importing database router MyDBRouter: "cannot import name connection"

我的设置.py

DATABASES = {
    'default': {
        ...
    },
    'other' : {
        ...
    }
}
DATABASE_ROUTERS = ['core.models.MyDBRouter',]

这里是数据库路由代码:

class MyAppRouter(object):
    def db_for_read(self, model, **hints):
        "Point all operations on myapp models to 'other'"
        if model._meta.app_label == 'myapp':
            return 'other'
        return None

    def db_for_write(self, model, **hints):
        "Point all operations on myapp models to 'other'"
        if model._meta.app_label == 'myapp':
            return 'other'
        return None

    def allow_relation(self, obj1, obj2, **hints):
        "Allow any relation if a model in myapp is involved"
        if obj1._meta.app_label == 'myapp' or obj2._meta.app_label == 'myapp':
            return True
        return None

    def allow_syncdb(self, db, model):
        "Make sure the myapp app only appears on the 'other' db"
        if db == 'other':
            return model._meta.app_label == 'myapp'
        elif model._meta.app_label == 'myapp':
            return False
        return None

我已经尝试将 None 替换为“默认”,但它仍然不起作用。

最佳答案

我通过在 settings.py 中添加“from django.db import connections”解决了这个问题

151 # Database router                                                                                                                                       
152 from django.db import connections
153 DATABASE_ROUTERS         = ['core.models.MyDBRouter',]

现在服务器运行正常!但是 django 只是忽略了路由器 -> 要修复它,永远不要将路由器保存在模型中!创建新文件

关于python - Django 数据库路由器无法导入名称连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11452837/

相关文章:

arrays - 如何限制 PostgreSQL 中数组的长度?

python - Django 教程 1 - 导入错误 : No module named apps

mysql - 请求设置 DATABASES,但在我的 Django 项目中设置未配置错误

python - cProfile 报告几乎所有时间都花在 <string> :1(<lambda>) 上

python - 多节点样式

c - 以非二进制模式从程序中操作(读/写)文件数据

python - Django 1.11 order by field on related model duplicate results 解决方法

python - 从字符串中排列删除具有不同长度的已定义子字符串

python - 正则表达式 Python 提取数

mysql - 如何获取所有员工第二高工资的记录基数