【问题标题】:Is it possible to have separate SQLite databases within the same Django project?是否可以在同一个 Django 项目中拥有单独的 SQLite 数据库?
【发布时间】:2008-10-03 18:27:33
【问题描述】:

我正在考虑为 Django 项目中的某些应用创建单独的 SQLite 数据库。
但是,如果可能,我不想使用直接 SQLite 访问。 对这些数据库进行 Django 风格的 ORM 访问将是理想的选择。
这可能吗?

谢谢。

【问题讨论】:

    标签: database django sqlite orm


    【解决方案1】:

    是的 - 低级 API 已经到位,只是目前缺少一个方便的高级 API。这些引用来自James Bennett (Django's release manager) on programming reddit

    它已经存在了——对于那些查看代码库的人来说,这是一个非常低级的 API——现在已经有几个月了(每个 QuerySet 都由 Query 支持,而 Query 又接受一个数据库连接作为参数)。没有任何用于它的高级文档 API,但我知道有人已经在做并且一直在做诸如多数据库/分片场景之类的事情。

    ...这不一定是需要大写的东西; QuerySet__init__() 方法接受关键字参数query,它应该是django.db.models.sql.Query 的一个实例。反过来,Query__init__() 方法接受关键字参数 connection,它应该是 django.db.backends.BaseDatabaseWrapper (您的 DB 的后端特定子类)的实例。

    从那里开始,这很容易;例如,您可以在管理器上覆盖 get_query_set() 以始终使用所需的连接返回 QuerySet,或者设置分片逻辑等内容,以根据传入的查询参数等确定要使用的数据库等.

    【讨论】:

      【解决方案2】:
      【解决方案3】:

      目前没有——每个项目都使用一个数据库,并且每个应用程序都必须存在于其中。如果你想拥有一个特定于应用程序的数据库,你不能通过 Django ORM 来实现。请参阅Multiple Database Support 上的 Django wiki 页面。

      【讨论】:

        【解决方案4】:

        这还不可能,但在 wiki Multiple Database Support in Django 上有一些讨论。它也在keynote on the future of Django at DjangoCon 2008 期间提出并成为更高优先级的问题之一。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-12-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-03
          • 2021-06-15
          • 1970-01-01
          相关资源
          最近更新 更多