2011-12-30 12 views
7

Zakładając, że mam schemat o nazwie "my_schema", w jaki sposób mogę utworzyć tabele z "django syncdb" dla tego konkretnego schematu? Czy istnieją inne alternatywy dla szybkiego tworzenia tabel z moich modeli django? Myślę, że domyślnie django tworzy tabele dla "publicznego" schematu.Jak określić nazwę schematu podczas działania "syncdb" w django?

+0

Czy mówisz o opcji ** - database = DATABASE **: * Nominuje bazę danych do synchronizacji. Domyślnie jest to "domyślna" baza danych. * – jpic

+0

Nie. Odnoszę się do schematu. http://www.postgresql.org/docs/9.0/static/ddl-schemas.html. Domyślnie django używa schematu o nazwie "public" –

+1

Django domyślnie nie używa schematu "publicznego". Psycopg2 domyślnie używa "publicznego" schematu (tak, przeczytałem kod z grep). Możesz spróbować ustawić "OPCJE": {"schemat": "twój szyfr"} w definicji DATABASE (na tym samym poziomie, co "UŻYTKOWNIK", "HOST", itp.). – jpic

Odpowiedz

5

Najpierw musisz mieć psycopg2> = 2.4.3 [1]. Jeśli masz, to możesz dodać schemat do opcji w konfiguracji bazy danych w oparciu o słowniki, tak:

DATABASES = { 
    'default': { 
    'ENGINE': 'django.db.backends.postgresql_psycopg2', 
    # ... 
    'OPTIONS': { 
     'options': '-c search_path=my_schema' 
    } 
    } 
} 

Testowane na PostgreSQL 8.4, django 1,3

  1. http://initd.org/psycopg/docs/module.html?highlight=connect#psycopg2.connect
  2. http://www.postgresql.org/docs/8.4/static/libpq-connect.html#LIBPQ-CONNECT-OPTIONS
0

Użyłem następujących informacji i pracy dla mnie

'default': { 'silnik': 'django.db.backends.postgresql_psycopg2', 'name': 'dab_name', 'user': 'username', 'Hasło': 'password', ' HOST ': 'localhost', 'PORT': '5432', 'Opcje': { 'Opcje': '-c search_path = nazwa #schema Tours' } }

Testowane na 9 i PostgreSQL django 1.10.2

Dzięki @romke

Powiązane problemy