2017-12-12 4 views
-2

setting.pyファイルに2つのデータベースが定義されています。Djangoで不要なテーブルをたくさん作成する方法

DATABASES = { 
    'default': { 
      'ENGINE': 'django.db.backends.mysql', 
      'NAME': 'monitoring', 
      'USER': 'root', 
      'PASSWORD': '', 
      'HOST': 'localhost', 
      'PORT': '', 
    }, 
    'source' :{ 
      'ENGINE': 'django.db.backends.mysql', 
      'NAME': 'source_db', 
      'USER': '*****', 
      'PASSWORD': '*****', 
      'HOST': '*****', 
      'PORT': '****', 
    } 
} 

は、私は、DBを移行しない限り、そうすることを許可していませんジャンゴsource_dbにいくつかのテーブルにアクセスする必要があります。したがって、コマンドpython manage.py migrate --database=sourceを実行すると、Djangoはサーバdbにいくつかのテーブルを作成しています。サーバdbにテーブルを作成することは許可されていないので、djangoを停止する方法はありますか?またはデータベースを移行せずにテーブルにアクセスする方法はありますか?

これは、作成したくない表のリストです。

+--------------------------------+ 
| Tables_in_source_db   | 
+--------------------------------+ 
| auth_group      | 
| auth_group_permissions   | 
| auth_permission    | 
| auth_user      | 
| auth_user_groups    | 
| auth_user_user_permissions  | 
| dashboard_monitoring_features | 
| dashboard_monitoring_modelinfo | 
| dashboard_monitoring_product | 
| django_admin_log    | 
| django_content_type   | 
| django_migrations    | 
| django_session     | 
+--------------------------------+ 
+0

テーブルを作成したくない場合は、migrateコマンドを実行しないでください。 – Exprator

+0

@Exprator source_db内のいくつかのテーブルにアクセスする必要があります.dbを移行しない限り、djangoは許可しません。 –

+0

"ソース" dbスキーマを変更することはできますが、新しいテーブルを作成することは許されません。dba POVからポイントを得ることはできません。とにかく:あなたの質問に答えるかもしれない(またはしていない)データベースルーティングに関する文書があります:https://docs.djangoproject.com/fr/2.0/topics/db/multi-db/#allow_migrate –

答えて

0

あなたが特定のテーブルをしたくない場合は、お使いのINSTALLED_APPS

+0

いいえ、デフォルトdbのテーブルを作成する必要がありますが、source_dbのテーブルは作成しないでください。 –

0

から

'django.contrib.auth`, 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.admin', 

dashboardアプリ

を削除するには、移行したい場合は/ defaultでテーブルを作成しますデータベースであり、sourceデータベースではない場合は、移行を実行するときにappとデータベースを定義する必要があります。同様:

python manage.py migrate dashboard --database=default 

これはdashboardアプリで移行を実行し、defaultデータベースにテーブルを作成します。

次に、sourceモデルをnon-managedに設定します。あなたは、モデルのメタクラスでmanaged = Falseを指定することにより行います。

class YourModel(models.Model): 
    ... your fields here ... 
    class Meta: 
     managed = False 

documentationから:

Falseの場合は、データベーステーブルの作成や削除の操作は、このモデルのために を実行されません。これは、モデルが の既存のテーブルまたは別の 手段によって作成されたデータベースビューを表す場合に便利です。

関連する問題