Django 中如何对数据库进行分表

Django 中如何对数据库进行分表

DJANGO ORM 对应多个结构相同的表,有时候分表是必须的,

方法1:guoqiang qian <gonefish@gmail.com>提供

你可以创建几个manager,然后重载manager中的get_query_set方法,对应不同的表

def get_query_set(self):
self.model._meta.db_table = u’foobar’ # 对应的表名
return super(Table1Manager, self).get_query_set()

通过修改元信息中的db_table

代码我已经简单试过,没有什么太大的问题,估计如果是GenericRelation的话,应该会有问题吧

方法2:DIrk <dirk.ye@gmail.com>提供

当数据量几千万、几亿条的时候,分表还是比较合理的方式。

我找到一个比较野蛮的方式:

from youapp.models import YouClass

YouClass._meta.db_table = ‘isnot_default_table’
rows = YouClass.objects.all()

这只是思路,可以通过修改_meta.db_table的值指定不同table,具体怎么操作(如何修改、在哪里修改),还应该和应用结合。比如某些历
史数据可以根据时间分表处理。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tianjiao85/archive/2009/02/27/3942675.aspx

Comments are closed.