2011-12-30 2 views
7

"my_schema"という名前のスキーマがあると仮定して、その特定のスキーマの "django syncdb"でテーブルを作成するにはどうすればよいですか?または、私のdjangoモデルからテーブルを素早く作成するための他の選択肢がありますか?私は、デフォルトでdjangoは "public"スキーマ用のテーブルを作成すると考えています。djangoで "syncdb"を実行しているときにスキーマ名を指定する方法は?

+0

あなたは話していますか** - database = DATABASE **:*同期するデータベースを指定します。既定値は "default"データベース* – jpic

+0

いいえ、私はスキーマを参照しています。 http://www.postgresql.org/docs/9.0/static/ddl-schemas.html。デフォルトのdjangoは "public"というスキーマを使用しています –

+1

Djangoはデフォルトで 'public'スキーマを使用しません。 Psycopg2はデフォルトで 'public'スキーマを使用しています(はい、grepでコードを読んでいます)。あなたのデータベース定義( 'USER'、 'HOST'などと同じレベル)で 'OPTIONS':{'schema': 'yourschema'}を設定しようとすることができます。 – jpic

答えて

5

まず、psycopg2> = 2.4.3 [1]である必要があります。あなたが持っているなら、あなたはこのように、辞書ベースのデータベース構成にOPTIONSにスキーマを追加することができます。

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

は、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

私は以下の情報を使用して私のために働いています

'デフォルト':{ 'ENGINE': 'django.db.backends.postgresql_psycopg2'、 'NAME': 'dab_name'、 'USER': 'ユーザ名'、 'PASSWORD': 'パスワード'、 " HOST ': 'はlocalhost'、 'PORT': '5432' 'OPTIONS':{ 'オプション': '-cのsearch_path =ツアー' #schema名 }}のPostgreSQL 9でテスト

とdjango 1.10.2

ありがとう@romke

関連する問題