如何在Django中使用架构?
我想在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/