2011-12-30 70 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

相关问题