如何在Django中使用架构?

41 投票
10 回答
46949 浏览
提问于 2025-04-15 13:03

我想在Django中使用PostgreSQL的模式(schemas),我该怎么做呢?

10 个回答

11

这件事比单纯的转义要复杂一些。你可以看看Django的Ticket #6148,那里可能有解决方案或者至少是个补丁。这个补丁在django.db的核心部分做了一些小改动,希望将来能正式加入到Django中。

之后,你只需要在Meta类中写上

db_schema = 'whatever_schema'

或者如果想全局更改的话,可以在settings.py里写上

DATABASE_SCHEMA = 'default_schema_name'

更新:2015-01-08

在Django中对应的问题已经开了7年,而那里的补丁现在也不再有效了。

目前来说,你不能直接在Django中使用PostgreSQL的schemas。

36

我之前一直在用:

db_table = '"schema"."tablename"'

但没意识到这只适用于只读操作。当你尝试添加新记录时,它会失败,因为序列的命名方式是“schema.tablename_column_id_seq”。

db_table = 'schema\".\"tablename'

到目前为止,这个方法是有效的。谢谢。

39

也许这会对你有帮助。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'OPTIONS': {
            'options': '-c search_path=your_schema'
        },
        'NAME': 'your_name',
        'USER': 'your_user',
        'PASSWORD': 'your_password',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

我从以下链接找到了答案: http://blog.amvtek.com/posts/2014/Jun/13/accessing-multiple-postgres-schemas-from-django/

撰写回答