【发布时间】:2014-03-12 19:43:55
【问题描述】:
在我的数据库中,我在我的数据库中定义了一个 Customer 表,所有其他表都是外键的。
class Customer(models.Model):
...
class TableA(models.Model):
Customer = models.ForeignKey(Customer)
...
class TableB(models.Model):
Customer = models.ForeignKey(Customer)
...
我正在尝试实现一个数据库路由器,该路由器根据Customer 表的主键确定要连接的数据库。例如,ids 在 1 - 100 范围内将连接到数据库 A,ids 在 101 - 200 范围内将连接到数据库 B。
我已经阅读了routers 上的 Django 文档,但我不确定我所问的是否可行。具体来说,db_for_read(model, **hints) 和 db_for_write(model, **hints) 方法适用于对象的 type。这对我来说没用,因为我需要基于对象实例的内容进行路由。该文档进一步指出,此时提供的唯一**hints 是适用的instance 对象,在某些情况下根本没有提供instance。这并不能激发我的信心,因为它没有明确说明没有提供instance 的情况。
我实际上是在尝试实现数据库的应用程序级分片。这在 Django 中可行吗?
【问题讨论】:
-
@ChrisWesseling 什么都没有。我已阅读文档并试图确定我正在尝试的内容是否可行。我更新了问题,详细说明了我的预期方法以及让我担心的原因。