在Django中指定PostgreSQL Schema

Rya*_*anM 9 django postgresql

我正在尝试使用Django构建一些数据库前端,因为我喜欢一般的MVC结构以及他们的模板系统和管理界面.但是,我在使用PostgreSQL后端的某些方面遇到了问题.

我已经设法弄清楚如何使用settings.py文件的数据库部分指定不同的模式(和数据库),如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    },
    'MPS': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'OPTIONS': {
            'options': '-c search_path=django'
        },
       'NAME': 'sandbox_manzer',
       'HOST': '192.168.2.151',
       'PORT': '5434',
       'USER': '******',
       'PASSWORD': '**********************',
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,当我尝试和脚本一些基本的测试,详见这里,我遇到一个问题.我的用户可以很好地创建数据库,以便我的test_db构建,但是当django应用程序将模型构建到表中时,我得到一个错误,指出No schema is specifiedtest_db.我将非常感谢有关如何为test_db指定模式名称的任何帮助.特别是因为我打算使用不同的模式作为逻辑分隔符为单个项目构建多个应用程序.

谢谢!

Dar*_*rio 7

我想你熟悉PostgreSQL 模式的概念.

您的应用正在寻找django数据库中的架构(可能不存在),因为您已经明确告知了它.

       'options': '-c search_path=django'
Run Code Online (Sandbox Code Playgroud)

对于每个应用程序,创建一个适当命名的模式并在其中指定它search_path.

  • 我试图避免将所有内容加载到公共模式中.我已经阅读了一些文章,建议膨胀公共模式可能会干扰PostgreSQL服务器操作并可能导致性能问题.此外,我想将模式用作我的不同应用程序的逻辑分隔符.我将继续玩这个. (3认同)