Django中的变量表名

时间:2011-01-18 18:09:03

标签: database django

我可以为db映射对象使用变量表名吗?例如,有n个具有相同结构的对象,我想将它存储在不同的表中,以提高某些操作的性能。

假设我将课程定义为:

class Measurement(models.Model):
    slave_id = models.IntegerField()
    tag = models.CharField(max_length=40)
    value = models.CharField(max_length=16)
    timestamp = models.DateTimeField()

    class Meta:
        db_table = 'measurements'

现在所有对象都存储在表'测量'中。我想使表名依赖于'slave_id'值。例如,要处理表'measurements_00001','measurements_00002'等数据......

是否可以使用Django ORM模型实现这一点,或者唯一的解决方案是降低到SQL级别?

1 个答案:

答案 0 :(得分:2)

  1. 浩大的大多数情况下,这不应该为您带来任何性能优势。值得拥有的任何RDBMS都应该毫不费力地处理巨大的表格。

  2. 如果需要,可能会有一些表的分片。再次,由DB服务器管理;在SQL级别(和ORM),它应该被视为一个表。理想情况下,歧视应自动处理;如果没有,大多数RDBMS允许你在表定义时指定它(或者有时用ALTER TABLE调整)

  3. 如果您选择定义分片方法,则每个RDBMS都有自己的非标准方法。最好不要将Python代码绑定到那个;而是在数据库服务器上进行一次调整。