我正在考虑为Django项目上的某些应用程序创建单独的SQLite数据库。
但是,如果可能的话,我不想使用直接的SQLite访问。 Django风格的ORM访问这些数据库将是理想的。
这可能吗?是否有可能在同一个Django项目中有独立的SQLite数据库?
谢谢。
我正在考虑为Django项目上的某些应用程序创建单独的SQLite数据库。
但是,如果可能的话,我不想使用直接的SQLite访问。 Django风格的ORM访问这些数据库将是理想的。
这可能吗?是否有可能在同一个Django项目中有独立的SQLite数据库?
谢谢。
目前没有 - 每个项目使用一个数据库,并且每个应用程序必须存在于其中。如果你想拥有一个特定于应用程序的数据库,那么你不能通过Django ORM来实现。请参阅Multiple Database Support上的Django wiki页面。
这是不可能的,但在维基上有一些讨论,Multiple Database Support in Django。在keynote on the future of Django at DjangoCon 2008期间它也被提出并且成为一个较高优先级的问题。
是的 - 低级的API已经到位,它现在只是缺少一个方便的高级API。这些报价来自James Bennett (Django's release manager) on programming reddit:
它已经存在 - 在一个非常低级别的API对于那些谁看的代码库 - 现在个月(每
QuerySet
由Query
,这反过来又接受支持数据库连接作为参数)。没有任何高层次的记录API,但我知道那些已经在做并且一直在做诸如多DB /分片场景的人。...这不一定是需要大写的东西;
__init__()
方法QuerySet
接受关键字参数query
,该参数应该是django.db.models.sql.Query
的实例。反过来,Query
的__init__()
方法接受关键字参数connection
,该关键字参数应该是(针对您的数据库的后端特定子类)django.db.backends.BaseDatabaseWrapper
的实例。从那里,它很容易;例如,您可以在管理器上覆盖
get_query_set()
,以始终使用所需的连接返回QuerySet
,或者设置分片逻辑等功能,根据传入查询参数等确定使用哪个DB。