我正在考虑为Django项目中的某些应用创建一个单独的SQLite数据库 但是,如果可能的话,我不想使用直接的SQLite访问。 Django风格的ORM访问这些数据库将是理想的 这可能吗?
谢谢。
答案 0 :(得分:5)
是的 - 这方面的低级API已经到位,它目前缺少一个方便的高级API。这些引用来自James Bennett (Django's release manager) on programming reddit:
它已存在 - 用于查看代码库的人的极低级API - 几个月了(每个
QuerySet
都由Query
支持,后者接受数据库连接作为参数)。没有任何高级文档化的API,但我知道那些已经在做的人并且一直在做多个DB /分片场景。......这不一定需要大量的报道;
__init__()
QuerySet
方法接受关键字参数query
,该参数应为django.db.models.sql.Query
的实例。反过来,__init__()
的{{1}}方法接受关键字参数Query
,该参数应该是(您的数据库的后端特定子类)connection
的实例。从那里,它很容易;例如,您可以覆盖管理器上的
django.db.backends.BaseDatabaseWrapper
以始终使用所需的连接返回get_query_set()
,或者根据传入的查询参数设置分片逻辑以确定要使用的数据库,等等。
答案 1 :(得分:4)
答案 2 :(得分:2)
目前没有 - 每个项目都使用一个数据库,每个应用程序都必须存在于其中。如果您想拥有特定于应用程序的数据库,则无法通过Django ORM执行此操作。请参阅Multiple Database Support上的Django wiki页面。
答案 3 :(得分:0)
这还不可能,但在维基上有一些关于它的讨论Multiple Database Support in Django。它也是在keynote on the future of Django at DjangoCon 2008期间提出来的,并且是一个更优先的问题。