首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django数据库前缀

Django数据库前缀
EN

Stack Overflow用户
提问于 2015-08-21 12:16:47
回答 2查看 2.7K关注 0票数 1

我需要为两个不同的应用合并两个数据库。如何在所有Django表中添加前缀以避免任何冲突?

例如,选项应该如下所示:

代码语言:javascript
复制
DB_PREFIX = 'my_prefix_'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-21 12:44:38

为所有名称加上前缀的另一种方法是将两个DB中的一个放在不同的模式中(多个模式可以共存在同一个数据库中,即使对象的名称相同)--这也将处理表以外的对象,例如索引、视图、函数、.

所以在其中一个数据库上,只需

代码语言:javascript
复制
ALTER SCHEMA public RENAME TO myname;

在此之后,您可以转储它(pg_dump -n myname只转储一个模式),并将其导入另一个数据库,而不会发生冲突。

您可以通过myname.tablname或通过设置search_path来引用新模式中的表或其他对象(这可以在每个用户的基础上完成,例如通过ALTER USER SET search_path = myschema, pg_catalog;)。

注意:不知道模式的框架和客户端可能会出现问题,因此您可能需要进行一些额外的调整。YMMV

http://www.postgresql.org/docs/9.4/static/sql-alterschema.html

票数 1
EN

Stack Overflow用户

发布于 2015-08-21 12:23:23

你可以用元选项来做模型,

代码语言:javascript
复制
class ModelHere():
      class Meta:
          db_table = "tablenamehere"

编辑

如果您想在您的所有表中添加前缀,包括auth_user、auth_group等,那么您正在寻找类似于django-表前缀的东西。只需安装并添加一些设置到设置文件,您就完成了。

  1. 'table_prefix',添加到安装的应用程序中,
  2. 将表前缀设置为DB_PREFIX = 'nifty_prefix'

然后运行syncdb,输出将是,

代码语言:javascript
复制
Creating tables ...
Creating table nifty_prefix_auth_permission
Creating table nifty_prefix_auth_group_permissions
Creating table nifty_prefix_auth_group
Creating table nifty_prefix_auth_user_groups
Creating table nifty_prefix_auth_user_user_permissions
Creating table nifty_prefix_auth_user
Creating table nifty_prefix_django_content_type
Creating table nifty_prefix_django_session
Creating table nifty_prefix_django_site
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32140131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档