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 Raspberry   git   javascript css python django drupal php apache mysql  MongoDB AWS data  ML AI