【问题标题】:How to set up django with a postgres database in a specific tablespace?如何在特定表空间中使用 postgres 数据库设置 django?
【发布时间】:2011-12-29 16:00:25
【问题描述】:

你的期望::

settings.py

DATABASES = {
    'default': {
        'NAME': 'db_name',
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'USER': 'user',
        'PASSWORD': 'password',
        'HOST': 'host',
        'PORT': '5432',
        'DEFAULT_TABLESPACE': 'tablespace-name',
    }
}

当我使用 DEFAULT_TABLESPACE 时,我希望使用此默认表空间授予访问权限。但我在那里使用什么并不重要。另外,如果我在模型元类中明确使用 db_tablespace,就我所知,它不会做任何事情。

我也尝试过不同的用户,但即使用户 postgres 也不起作用。如果我定义 db_table = "tablespace.tablename",它也不起作用。

有效的 SQL:

select count(*) from schemaname.tablename

我对数据库进行了备份并在本地恢复它,但没有创建表空间。它很好地导入并忽略了表空间。然后它就可以工作了。

如何使用带有表空间的 postgres 配置 Django?还是模式名??其实我什么都不懂,希望大家帮帮我。

另请参阅:https://docs.djangoproject.com/en/dev/topics/db/tablespaces/

使用 Django 1.3.1、postgresql 8.4、psycopg2

更新:

使用表空间时似乎没有选择“默认模式”。我尝试了一些测试,下面是使用 ./manage.py dbshel​​l 的结果:

这确实适用于我没有表空间的数据库,但不适用于有表空间的数据库:

select * from parameter;

这对两个数据库都有效:

select * from tablespace.parameter;

不幸的是,数据库设置中的选项“DATABASE_SCHEMA”不起作用,模型元对象中的“db_schema”也不起作用。所以问题现在有点清楚了。有没有人可以解决这个问题?

【问题讨论】:

  • 表空间支持在 Django 1.3.1 中不可用。它将被添加到即将发布的 Django 1.4 中。
  • 谢谢,我停止寻找解决方案并要求数据库所有者更改表空间:-)

标签: python django postgresql settings psycopg2


【解决方案1】:

模式和表空间是两个不同的东西。

schema 本质上是一个命名空间。 tablespace 是文件系统中的一个位置。模式是合乎逻辑的事物;表空间是物理的东西。

如果您想在一个命名空间中将一堆相关的表(可能还有其他命名对象)组合在一起,您需要一个架构。

如果您想通过将索引放在快速 SSD 磁盘(与表、视图等不同的磁盘)上来提高速度,那么您需要一个表空间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 2012-12-29
    • 1970-01-01
    • 2012-12-19
    • 2015-03-23
    • 1970-01-01
    • 2021-03-14
    相关资源
    最近更新 更多