1、データベース接続設定
PyMySQLをインストールするPIP
2、ディレクトリ内の同じ名前のプロジェクトには、myproject/myproject
下に__init__.py
次のコードを追加します
輸入pymysql pymysql.install_as_MySQLdb()
3、変更settings.py
デフォルトのデータベースを default
= DATABASES { ' デフォルト' :{ ' ENGINE ':' django.db.backends.mysql '、#のデータベースエンジン ' NAME ':' pythondms '、 #のデータベース名 ' USER ':' ルート'、 #のユーザ名 ' PASSWORD ':' '、 #のパスワード ' HOST ':' 36.103.245.29 '、 #1 データベースホストは、デフォルトはlocalhost ' PORT ':' 3306 '、 #のデータベースポートが、MySQLのデフォルトは3306である ' OPTIONS ' { ' 自動コミット' :真、 } } }
4、マルチ接続構成データベース
#データベース設定 DATABASES = { ' デフォルト' :{ ' ENGINE ':' django.db.backends.mysql '、#のデータベースエンジン ' NAME ':' pythondms '、 #のデータベース名 ' USER ':' ルート'、 #のユーザ名 ' PASSWORD ':' '、 #のパスワード "ホスト':' 36.103.245.29 ' #1 データベースホストは、デフォルトはlocalhost ' PORT ':' 3306 ' #のデータベース・ポート、MySQLのデフォルトは3306である ' OPTIONS ' { ' 自動コミット' :真、 } }、 ' デフォルト1の' :{ ' エンジン':' django.db.backends.mysql '、#のデータベースエンジン "NAME ":' Pythondms '、 #のデータベース名 ' USER ':' ルート'、 #のユーザ名 ' PASSWORD ':' '、 #のパスワード ' HOST ':' 39.107.35.95 '、 #のデータベースホストは、デフォルトではlocalhostです ' PORT ':" 3306 "、 #データベースポート、MySQLのデフォルトは3306に ' OPTIONS ' { ' 自動コミット' :真、 } } } DATABASE_ROUTERS = [ ' dms.database_router.DatabaseAppsRouter ' ] DATABASE_APPS_MAPPING = { ' userctrl ':' デフォルト' 、 ' app02 ':' デフォルト1 ' 、 }
ここでは、ルーティング・データベースで構成されdms.database_router.DatabaseAppsRouter
、次いで、アプリ指定されたデータベースを指定します'userctrl': 'default', 'app02': 'default',
。今、私たちは、ディレクトリ内に同じ名前の、悲しいかなプロジェクトを必要とするmyproject/myproject
新しいケースを作成するために、database_router.py
データベースのルーティングを実装します。
# database_router.py
django.confのインポート設定 DATABASE_MAPPING = settings.DATABASE_APPS_MAPPING クラスDatabaseAppsRouter(オブジェクト): 「」」 別のモデルのすべてのデータベース操作を制御するルータ 。データベース アプリはsettings.DATABASE_APPS_MAPPINGに設定されていない場合、ルータは にフォールバックしますdefaultをデータベース。 セッティング例: DATABASE_APPS_MAPPING = { 'APP1': 'DB1'、 'APP2': 'DB2'} "" " DEF db_for_read(自己、モデル、** ヒント ):""" 「ポイント全て読み出し特定のデータベースへの操作。「」」 もしmodel._meta.app_label でDATABASE_MAPPING: 返すDATABASE_MAPPINGは[model._meta.app_label] 返すなし デフ(自己、モデル、** db_for_writeない:ヒント) 「」「ポイントは、すべての特定のデータベースへの書き込み操作を。『』」 場合 model._meta .app_label でDATABASE_MAPPING: 戻る[model._meta.app_label] DATABASE_MAPPING 返すなし デフ allow_relation(自己、OBJ1、OBJ2、** :ヒントを) "" " 同じデータベースを使用するアプリケーションとの間の関係を許可します。""" db_obj1= DATABASE_MAPPING.get(obj1._meta.app_label) db_obj2 = DATABASE_MAPPING.get(obj2._meta.app_label) 場合 db_obj1 とdb_obj2: もし db_obj1 == db_obj2: 返す真の 他: 戻らない偽 の戻りなし デフallow_syncdb(自己、デシベル、モデル): 「」「アプリは唯一の関連するデータベースに表示されていることを確認してください『』」 もしデシベルでDATABASE_MAPPING.values(): リターンDATABASE_MAPPING.get(model._meta.app_label)== デシベル のelif model._meta.app_label にDATABASE_MAPPING: 戻らない偽 の戻りなし デフ(自己、デシベル、app_label、モデル=なし、** allow_migrate ヒント ):""」 確認してください認証アプリは唯一の'auth_db'に表示され たデータベース 。""」 場合デシベルで)DATABASE_MAPPING.values(: 戻る DATABASE_MAPPING.get(app_label)== デシベル のelif app_label でDATABASE_MAPPINGを: リターン偽 リターンなし #ジャンゴ1.4 - Djangoの1.6 デフallow_syncdb(自己、デシベル、モデル): 「」「アプリは唯一の関連するデータベースに表示されていることを確認してください。『』」 もしデシベルで:DATABASE_MAPPING.values() を返す DATABASE_MAPPING.get (model._meta.app_label)== デシベル のelif model._meta.app_label でDATABASE_MAPPING: 返すFalseの 戻りなし #ジャンゴ1.7 -ジャンゴ1.11 デフ allow_migrate(自己、デシベル、app_label、MODEL_NAME =なし、** ヒント): #の印刷デシベル、app_label、MODEL_NAME、ヒント 場合デシベルでDATABASE_MAPPING.values(): 返す DATABASE_MAPPING.get(app_label)== デシベル のelif app_label でDATABASE_MAPPINGを: 返さない偽 の戻りなし
我々は別のアプリを使って別のデータベースを達成するように、私たちが使用できるpython manage.py migrate --database=mysql02
データベースの同期を達成するためのコマンドを(テーブルの作成)