【问题标题】:Django: Creating/Copying/Removing DBs dynamicallyDjango:动态创建/复制/删除数据库
【发布时间】:2018-08-27 14:54:20
【问题描述】:

我知道我可以使用using() 来选择settings.py 中定义的数据库,用于以下操作:

User.objects.using('users_db').get(id=5).delete()

问题是我需要在服务器运行时动态创建/复制/删除几个不同的数据库(无需重新启动服务器)。这样我就可以更改settings.py 中的数据库配置,并通过使用using() 在我的代码中选择活动数据库。

更新:请注意,由于在从django.db 导入connections 后,我们可以通过connections.databases 访问DB 设置,因此主要问题不是如何在@987654329 中定义DB @。我正在寻找可以创建/复制/删除数据库的 django ORM 命令。

【问题讨论】:

  • Django 可能不是这个问题的正确解决方案。换句话说,要解决这个问题 - 您必须跳出 ORM 并“手动”编写连接到其他数据库的数据库代码,然后执行查询。考虑将此部分卸载到您从 Django 调用的单独(香草)Python 脚本中。
  • 为什么需要像这样动态更改数据库?
  • 我需要创建/复制/删除数据库的原因是有几个相互隔离的数据集合。用户可以决定选择一组特殊的数据并为它们执行处理,然后他可以创建新的/复制和更改以前的数据等等。

标签: django database python-3.x orm


【解决方案1】:

两种方法可以解决这个问题。

  1. 您可以使用 postgresql 并使用 json 字段来存储您的信息。 在这种情况下,您可以使用所有 django 功能,这是推荐的方式来完成您想要实现的目标。 来源-Jsonfield Django
  2. 您可以使用 mongodb 并创建动态数据库。但是你不能用这个来使用 Django ORM。 (有一个 django-mongodb 引擎 - Django-mongodb-engine 但这对于创建和删除动态数据库没有用)。所以你应该使用Pymongo 并围绕它编写包装函数来创建动态数据库。

【讨论】:

  • 我无法理解创建/复制/删除数据库与 JSON 字段之间的关系。 @subha.py
  • 如果你想像字典一样插入动态数据,你应该选择选项 1,否则选择选项 2
  • 我想创建新的完整数据库/完全删除一些现有的数据库,我更喜欢在 MySQL 中工作。
  • 这很难实现,如果你有截止日期,这不是一个可行的方法。
  • 如果我没有截止日期怎么办? @subha.py
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-16
  • 2011-10-02
  • 2014-11-30
  • 1970-01-01
  • 2021-03-23
  • 2017-03-01
  • 1970-01-01
相关资源
最近更新 更多