suporte de banco de dados múltiplos em django

votos
9

De algum fórum eu vim a saber que o apoio do banco de dados múltipla é adicionado em Django ao nível mais baixo, mas as APIs de nível superior ainda não foram adicionadas.

Alguém por favor pode me dizer como se pode alcançar várias conexões de banco de dados em Django.

Alguém tem alguma idéia de quando o Django totalmente / apoiar oficialmente conexões de banco de dados múltiplas.

Publicado 06/11/2008 em 10:39
fonte usuário
Em outras línguas...                            


10 respostas

votos
9

Se você simplesmente precisa de múltiplas conexões, você pode fazer algo como isto:

from django.db import load_backend
myBackend = load_backend('postgresql_psycopg2') # or 'mysql', 'sqlite3', 'oracle'
myConnection = myBackend.DatabaseWrapper({
    'DATABASE_HOST': '192.168.1.1',
    'DATABASE_NAME': 'my_database',
    'DATABASE_OPTIONS': {},
    'DATABASE_PASSWORD': "",
    'DATABASE_PORT': "",
    'DATABASE_USER': "my_user",
    'TIME_ZONE': "America/New_York",})
# Now we can do all the standard raw sql stuff with myConnection.
myCursor = myConnection.cursor()
myCursor.execute("SELECT COUNT(1) FROM my_table;")
myCursor.fetchone()
Respondeu 02/12/2009 em 22:49
fonte usuário

votos
6

Este estará em Django 1.2.

veja http://docs.djangoproject.com/en/dev/topics/db/multi-db/

Respondeu 17/02/2010 em 01:52
fonte usuário

votos
4

A discussão mais recente que eu vi nele foi na Proposta: API user-friendly para suporte multi-banco de dados de discussão django-developers, que também tem um exemplo de uma forma de usar vários bancos de dados usando gerenciadores na mensagem original.

Respondeu 06/11/2008 em 12:35
fonte usuário

votos
3

Se você ler alguns dos muitos ( muitos ) tópicos sobre este assunto em django-dev, você verá que o que parece simples, não é. Se você escolher um único caso de uso, então parece fácil, mas assim que você começar a generalizar em qualquer maneira que você começar a ter problemas.

Para usar o fio acima mencionado como um exemplo, quando você diz "vários bancos de dados", qual das seguintes opções você está falando?

  • Todos DB na mesma máquina com o mesmo motor.
  • Todos DB na mesma máquina, motores diferentes (por exemplo MySQL + PostgreSQL)
  • Um Mestre DB com N somente leitura escravos em diferentes máquinas.
  • Sharding de tabelas em vários servidores de banco de dados.

você vai precisar de:

  • chaves estrangeiras em todo DBs
  • JOINs entre máquinas e / ou motores
  • etc etc.

Um dos problemas com um ORM liso como Django é que ele esconde todos esses detalhes complicados sob uma pintura agradável. Para continuar a fazer isso, mas, em seguida, adicionar em alguma das situações acima, não é fácil (tm).

Respondeu 07/11/2008 em 16:54
fonte usuário

votos
2

Eric Florenzano escreveu um bom post que permite algum suporte de banco de dados múltiplos em: Fácil Suporte MultipleDatabase para Django .

Ela começa com a criação de um novo gerente personalizado que permite que você especifique as configurações de banco de dados.

Respondeu 15/06/2009 em 17:46
fonte usuário

votos
1

banco de dados múltiplos para escolher

Nós sempre precisamos de um padrão chamado, os nomes do resto são até você.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mupltiple_datab_app1',                     
        'USER': 'root',                     
        'PASSWORD': 'admin',                  
        'HOST': "",                      
        'PORT': "",                     
    },
    'user1':{
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'mupltiple_datab_app2',                      
        'USER': 'root',                     
        'PASSWORD': 'admin',                  
        'HOST': "",                        
        'PORT': "",  

    },
    'user2':{
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'mupltiple_datab_app3',                      
        'USER': 'root',                     
        'PASSWORD': 'admin',                  
        'HOST':"" ,                     
        'PORT': "" ,  

    }
}

para sincronização de um banco de dados específico

manage.py syncdb --database=user1
Respondeu 30/01/2013 em 13:49
fonte usuário

votos
1

Existe uma directiva "usando" para consultas, salva e exclusões

https://docs.djangoproject.com/en/dev/topics/db/multi-db/#manually-selecting-a-database

Respondeu 16/12/2011 em 20:33
fonte usuário

votos
0

De Django 1.2, ele irá suportar múltiplos bancos de dados. Veja: http://docs.djangoproject.com/en/dev/topics/db/multi-db/ Versão 1.2 está agora em beta

Respondeu 06/04/2010 em 11:00
fonte usuário

votos
0

A abordagem de Eric Florenzano funciona bem se todos os seus bancos de dados usam o mesmo motor. Se você tem motores diferentes (PostgreSQL e MSSQL no meu caso), você vai correr em muitas questões profundas no código ORM (tais como modelos / sql / where.py usando a sintaxe SQL da conexão padrão).

Se você precisa que isso funcione, você deve esperar para o projeto MultiDB de Alex Gaynor, que está prevista para o Django 1.2

Respondeu 17/08/2009 em 13:37
fonte usuário

votos
0

Eu acho que você vai ter que recorrer a "sql raw" .. tipo de coisa ..
veja aqui: http://docs.djangoproject.com/en/dev/topics/db/sql/

você precisa de uma "conexão" para o outro banco de dados, se você olhar para django/db/__init__.pyem torno da linha 39 (na minha versão ..)

connection = backend.DatabaseWrapper(**settings.DATABASE_OPTIONS)

tentar levá-la de lá ..
PS Eu realmente não tentei isso ou qualquer coisa .. apenas tentando apontar na direção geral do que eu acho que pode resolver seu problema.

Respondeu 07/11/2008 em 05:08
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more