Django中的多个数据库

2 投票
1 回答
1327 浏览
提问于 2025-04-18 14:25

我在一个Django应用里有两个数据库。这两个数据库在同一个网络上,也就是局域网。所以,我想HOST的IP地址应该是不同的。难道不是吗?

目前为了测试我的代码,我给了相同的HOST但不同的端口。

所以,我的数据库设置如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'vms_db',
        'USER': 'root',
        'PASSWORD': '',
        'HOST': '127.0.0.1',
        'PORT': '8000',         
    },
    'users': {
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'aramex_vms_db',              
        'USER': 'root',
        'PASSWORD': '',
        'HOST': '127.0.0.1',                  
        'PORT': '8080',                      
    }
}

当我运行syncdb的时候,它返回了一个错误,内容是:

django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' (111)")

但是当我使用相同的端口时,它就能正常工作,不过表格是放在默认数据库里的。我知道迁移命令默认是作用于default数据库的。

1) 可是如果我想让默认数据库和用户数据库有不同的表,该怎么做呢?

1 个回答

0

如果你想迁移你的数据库用户:

$ ./manage.py migrate --database=users

你可以在这里看到更多信息:https://docs.djangoproject.com/en/dev/topics/db/multi-db/#synchronizing-your-databases

如果你想在获取某个条目时选择你的数据库:

#default dabatase
Author.objects.all()

#custom database
Author.objects.using('DATABASE_NAME').all()

更多信息请查看:https://docs.djangoproject.com/en/dev/topics/db/multi-db/#manually-selecting-a-database

撰写回答