Code


Version 1 (modified by jpellerin@…, 8 years ago) (diff)

First notes on multiple database support

Multiple Database Support

Work is underway on a patch for #1142, which will add support for multiple database connections. This page documents my current plan and progress towards a fully working patch.

The plan

  • Add a new settings variable, DATABASES. DATABASES is a dict of named database connection parameter sets. In each set, the keys are the same as the standard database connection settings variables.
    DATABASES = { 
        'a': { 'DATABASE_ENGINE': 'sqlite3',
               'DATABASE_NAME': '/tmp/dba.db'
        },
        'b': { 'DATABASE_ENGINE': 'sqlite3',
               'DATABASE_NAME': '/tmp/dbb.db'
        }}
    

  • Add db_connection to Meta. This allows model classes to specify which connection they should use.
    class Artist(models.Model):
        name = models.CharField(maxlength=100)
        alive = models.BooleanField(default=True)
    
        def __str__(self):
            return self.name
    
        class Meta:
            db_connection = 'a'
            
    class Widget(models.Model):
        code = models.CharField(maxlength=10, unique=True)
        weight = models.IntegerField()
    
        def __str__(self):
            return self.code
        
        class Meta:
            db_connection = 'b'
    

Attachments (6)

Download all attachments as: .zip