2011-12-30 2 views
7

이름이 "my_schema"인 스키마가 있다고 가정하면 특정 스키마에 대해 "django syncdb"가있는 테이블을 만들 수 있습니까? 아니면 내 장고 모델에서 테이블을 빠르게 만들 수있는 다른 대안이 있습니까? 내 생각에, 기본적으로 django는 "공용"스키마 테이블을 생성합니다.django에서 "syncdb"를 실행하는 동안 스키마 이름을 지정하는 방법은 무엇입니까?

+0

about ** - database = DATABASE ** : * 동기화 할 데이터베이스를 지명합니다. "기본"데이터베이스 기본값 * – jpic

+0

아니요. 스키마를 나타냅니다. http://www.postgresql.org/docs/9.0/static/ddl-schemas.html. 기본 django는 "public"이라는 스키마를 사용합니다. –

+1

Django는 기본적으로 '공개'스키마를 사용하지 않습니다. Psycopg2는 기본적으로 '공개'스키마를 사용합니다 (예, grep 코드를 읽었습니다). 'USER', 'HOST'등과 같은 레벨의 DATABASE 정의에서 'OPTIONS': { 'schema': 'yourschema'}를 설정할 수 있습니다. – jpic

답변

5

먼저 psycopg2> = 2.4.3 [1]이어야합니다. 당신이 가지고있는 경우에 당신은 다음과 같이 사전 기반 데이터베이스 구성 옵션에 스키마를 추가 할 수 있습니다

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

는 PostgreSQL의 8.4에서 테스트와 장고 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

다음 정보를 사용하여 저에게 도움을드립니다.

'기본': { '엔진': 'django.db.backends.postgresql_psycopg2', 'NAME': 'dab_name', '사용자': '사용자 이름', 'PASSWORD': '비밀번호', ' HOST ':'로컬 호스트 ', 'PORT ':'5432 ', '옵션 ': { '옵션 ':'-c search_path의 = 투어 '#schema 이름 } 가}

는 PostgreSQL의 9에서 테스트 및 장고 1.10.2

감사합니다. @romke

관련 문제