2011-12-30 7 views
7

Supponendo che abbia uno schema con il nome "my_schema", come posso creare tabelle con "django syncdb" per quello schema particolare? O ci sono altre alternative per creare rapidamente tabelle dai miei modelli di django? Penso che per impostazione predefinita django crei tabelle per lo schema "pubblico".Come specificare il nome dello schema durante l'esecuzione di "syncdb" in django?

+0

Stai parlando about option ** - database = DATABASE **: * Nomina un database da sincronizzare. Predefinito al database "predefinito". * – jpic

+0

No. Mi riferisco allo schema. http://www.postgresql.org/docs/9.0/static/ddl-schemas.html. Per impostazione predefinita, django utilizza lo schema denominato "public" –

+1

Django non utilizza lo schema "pubblico" per impostazione predefinita. Psycopg2 usa lo schema 'pubblico' di default (sì, ho letto il codice con grep). Puoi provare a impostare 'OPZIONI': {'schema': 'yourschema'} nella definizione del DATABASE (allo stesso livello di 'USER', 'HOST', ecc ...). – jpic

risposta

5

In primo luogo, è necessario avere psycopg2> = 2.4.3 [1]. Se avete quindi è possibile aggiungere schema per Opzioni nella configurazione del database basato su dizionario, in questo modo:

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

provata su PostgreSQL 8.4 e 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

Ho usato le seguenti informazioni e lavoro per me

'default': { 'MOTORE': 'django.db.backends.postgresql_psycopg2', 'NOME': 'dab_name', 'UTENTE': 'username', 'PASSWORD': 'password', ' HOST ': 'localhost', 'porta': '5432', 'Opzioni': { 'Opzioni': 'search_path -c = name #schema tour' }}

Testato su PostgreSQL 9 e django 1.10.2

Grazie @romke

Problemi correlati