多数据库帮助? (django的)

时间:2012-04-18 06:08:45

标签: python database django

所以我在https://docs.djangoproject.com/en/dev/topics/db/multi-db/阅读了多个数据库文档并且它非常有帮助。我得到了如何在setting.py中显示第二个数据库以及如何通过命令提示符同步它。但我无法弄清楚的是如何指定如何使某个模型同步/保存在第二个数据库中。特别是如果我没有明确说明。

与用户一样。

如果我使用django的用户类来创建用户,那么如何将其保存到第二个数据库呢?

2 个答案:

答案 0 :(得分:1)

请仔细阅读您提供的文档。文档的Automatic databse routing部分准确回答了您的问题 用户数据库的路由取决于您的实际使用情况和分区策略,没有一句话答案。用户可以在文档中找到示例,您可以阅读并检查本地计算机。

答案 1 :(得分:1)

(直接来自Django DOCS的代码:https://docs.djangoproject.com/en/dev/topics/db/multi-db/#automatic-database-routing

路由器处理应在哪个数据库中获取或设置数据。

如果您想为您的应用程序使用路由器(名为“myapp”)

class MyAppRouter(object):
        """A router to control all database operations on models in
        the myapp application"""

        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

通过向settings.py添加下一行,将在其自己的数据库(名为“other”)中创建/保存/处理所有“myapp”应用程序数据。所有其他应用程序都使用默认数据库。

DATABASE_ROUTERS = ['path.to.MyAppRouter']

路由器可以保存在任何您想要的地方。只需修复settings.DATABASE_ROUTERS。

的路径