5

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

谢谢你。

4

4 回答 4

5

是的 - 用于此的低级 API 已经到位,目前只是缺少一个方便的高级 API。这些引用来自James Bennett(Django 的发布经理)在 reddit 编程中

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

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

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

于 2008-10-04T12:19:48.333 回答
4

已经支持http://docs.djangoproject.com/en/dev/topics/db/multi-db/

于 2010-07-21T15:25:03.353 回答
2

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

于 2008-10-03T18:35:56.330 回答
0

这还不可能,但是在 wiki 上有一些关于它的讨论,Multiple Database Support in Django。它也在DjangoCon 2008 上关于 Django 未来的主题演讲中被提出,并成为更高优先级的问题之一。

于 2008-10-03T18:46:05.357 回答