sql >> データベース >  >> RDS >> Mysql

データベースルーターを使用したアプリDjango間での(mysql)データベースの共有

    app2_model2が以前に作成された可能性があります。確認してください!

    あなたはこのようにそれをすることができます:

    settings.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. CONCAT()がMySQLのデフォルトの文字セットにデフォルト設定されないのはなぜですか?

    2. PostgreSQLはテキストに部分文字列が出現する回数をカウントします

    3. MySQLでSelectforUpdateをテストする方法

    4. Oracle10gExpressのホームページが表示されない