https://docs.djangoproject.com/en/1.8/topics/db/multi-db/
Neste exemplo é mostrado como funciona o sistema de Multi Database do Django, com ele é possível gerenciar e manipular mais de um banco de dados no mesmo sistema.
O Multi Database do Django funciona de maneira simples, basta adicionar após o objeto Model a função using('nome-da-base')
,
por exemplo:
Post.objects.order_by() => Post.objects.using('default').order_by()
Post.objects.create() => Post.objects.using('default').create()
Sendo que o parâmetro da função using()
é o nome (alias) da database definido no arquivo settings.py
, por exemplo:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'exemplos_dj',
...
},
-
Instale o módulo PyMysql com o comando
pip install pymysql
-
Abre o arquivo
__init__.py
e adicione o trecho de código abaixo para ativar o módulo PyMySQLimport pymysql pymysql.install_as_MySQLdb()
-
Abre o arquivo
settings.py
; -
Procure o seguinte trecho de código:
'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'mydatabase', }
-
Substitua pelo código abaixo:
'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'exemplos_dj', 'USER': 'root', 'PASSWORD': 'senha-do-root', 'HOST': '127.0.0.1', }
-
Para adicionar as tabelas e criar o usuário admin do Django, digite o comando abaixo.
python manage.py syncdb
-
Crie as novas tabelas que serão utilizadas pelo Django no MySQL
exemplos_dj exemplos_dj_add
-
Digite o comando abaixo para migrar no
exemplo_dj
do MySQL as tabelas do Djangopython manage.py migrate
-
Adicione a configuração da database
exemplos_dj_add
no arquivosettings.py
'exemplos_dj_add': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'exemplos_dj_add', 'USER': 'root', 'PASSWORD': 'senha-do-root', 'HOST': '127.0.0.1', }
-
Adicione a tabela
multi_database_post
na databaseexemplos_dj_add
do MySQL, para isso acesse a databaseexemplos_dj_add
e na aba SQL digite o código abaixo:CREATE TABLE IF NOT EXISTS `multi_database_intro_post` ( `id` int(11) NOT NULL AUTO_INCREMENT, `titulo` varchar(200) NOT NULL, `conteudo` longtext NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Para inserir os registro inicie o Shell do django
>>> from multi_database_intro.models import Post
>>> Post.objects.using('default').create(titulo="Testando 1", conteudo="Conteúdo de teste")
Para Inserir outro registro na database exemplos_dj_add
digite a mesma linha acima alterando o parâmetro do using
para exemplos_dj_add
, como no exemplo abaixo:
>>> Post.objects.using('exemplos_dj_add').create(titulo="Testando 2", conteudo="Conteúdo de teste 2")
Para saber mais como manipular os registros do banco de dados pelo Shell do Django clique no link abaixo: Manipulando registros no banco de dados pelo Shell