2011-12-30 107 views
7

假設我有一個名爲「my_schema」的模式,那麼如何使用「django syncdb」爲特定模式創建表?還是有任何其他的替代方法可以快速創建我的django模型中的表格嗎?我認爲,默認情況下,django爲「公共」模式創建表。如何在django中運行「syncdb」時指定模式名稱?

+0

你在說什麼關於選項** - database = DATABASE **:*提名一個數據庫進行同步。默認爲「默認」數據庫。* – jpic 2011-12-30 15:00:15

+0

不,我指的是模式。 http://www.postgresql.org/docs/9.0/static/ddl-schemas.html。默認情況下,django使用名爲「public」的模式 – 2011-12-30 16:54:09

+1

Django默認不使用「公共」模式。 Psycopg2默認使用「公共」模式(是的,我用grep讀過代碼)。你可以嘗試在你的DATABASE定義中(與'USER','HOST'等等相同的級別)設置'OPTIONS':{'schema':'yourschema'}。 – jpic 2011-12-30 17:04:12

回答

5

首先,您必須具有psycopg2> = 2.4.3 [1]。如果你有,那麼你可以在基於字典的數據庫配置添加架構選項,就像這樣:

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

我已使用以下信息併爲我工作

'默認':{ 的 '發動機': 'django.db.backends.postgresql_psycopg2', 'NAME': 'dab_name', '用戶': '用戶名', '密碼': '密碼', 「 HOST': '本地主機', 'PORT': '5432', '選項':{ '選項': '-c SEARCH_PATH =旅行團' #schema名 } }

測試上的PostgreSQL 9和django 1.10.2

謝謝@romke

相關問題