Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

डेटाबेस रूटर्स के साथ Django ऐप्स के बीच (mysql) डेटाबेस साझा करना

हो सकता है कि app2_model2 पहले बनाया गया हो, इसे जांचें!

आप इसे इस तरह कर सकते हैं:

सेटिंग्स.py

DATABASE_APPS_MAPPING = {'app1': 'mydb', 'app2': 'mydb'}
DATABASE_ROUTERS = ['path.router.DatabaseAppsRouter']

router.py

from django.conf import settings

class DatabaseAppsRouter(object):
    """
    A router to control all database operations on models for different
    databases.

    In case an app is not set in settings.DATABASE_APPS_MAPPING, the router
    will fallback to the `default` database.

    Settings example:

    DATABASE_APPS_MAPPING = {'app1': 'db1', 'app2': 'db2'}
    """

    def db_for_read(self, model, **hints):
        """Point all read operations to the specific database."""
        if settings.DATABASE_APPS_MAPPING.has_key(model._meta.app_label):
            return settings.DATABASE_APPS_MAPPING[model._meta.app_label]
        return None

    def db_for_write(self, model, **hints):
        """Point all write operations to the specific database."""
        if settings.DATABASE_APPS_MAPPING.has_key(model._meta.app_label):
            return settings.DATABASE_APPS_MAPPING[model._meta.app_label]
        return None

    def allow_relation(self, obj1, obj2, **hints):
        """Allow any relation between apps that use the same database."""
        db_obj1 = settings.DATABASE_APPS_MAPPING.get(obj1._meta.app_label)
        db_obj2 = settings.DATABASE_APPS_MAPPING.get(obj2._meta.app_label)
        if db_obj1 and db_obj2:
            if db_obj1 == db_obj2:
                return True
            else:
                return False
        return None

    def allow_syncdb(self, db, model):
        """Make sure that apps only appear in the related database."""

        if db in settings.DATABASE_APPS_MAPPING.values():
            return settings.DATABASE_APPS_MAPPING.get(model._meta.app_label) == db
        elif settings.DATABASE_APPS_MAPPING.has_key(model._meta.app_label):
            return False
        return None


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL MyISAM स्टोरेज इंजन पर कैस्केड हटाएं का उपयोग कैसे करें?

  2. MySQL का उपयोग करके पर्सेंटाइल वैल्यू की गणना करें

  3. मैं mysql में md5 पासवर्ड कैसे बनाऊं और स्टोर करूं?

  4. वर्ष 2037 के बाद MySQL तारीख को स्टोर करने का सही तरीका

  5. स्थानीय MYSQL DB को दूरस्थ DB सर्वर तक कैसे ले जाएँ?