Using multiple databases in Django

Posted under » Django on 3 June 2023

There are times when you want to use multiple databases. Whether it is from a different MySQL database or postgres or Sqlites

DATABASES = {
    "default": {
        "NAME": "app_data",
        "ENGINE": "django.db.backends.postgresql",
        "USER": "postgres_user",
        "PASSWORD": "s3krit",
    },
    "users": {
        "NAME": "user_data",
        "ENGINE": "django.db.backends.mysql",
        "USER": "mysql_user",
        "PASSWORD": "priv4te",
    },
}

The model would look like this.

class PostingsNote(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    class Meta:
        managed = False
        db_table = 'postings_note'

If managed = False, no database table creation, modification, or deletion operations will be performed for this model. This is useful if the model represents an existing table or a database view that has been created by some other means. This is the only difference when managed=False. All other aspects of model handling are the same.

The views

from .models import PostingsNote

...
queryset = PostingsNote.objects.using('users').all()
...

You can select the database for a QuerySet at any point in the QuerySet “chain.” Call using() on the QuerySet to get another QuerySet that uses the specified database. using() takes a single argument: the alias of the database on which you want to run the query.

web security linux ubuntu python django git Raspberry apache mysql php drupal cake javascript css AWS data