database - Django 中的变量表名

标签 database django

我可以为数据库映射对象使用可变表名吗?例如,有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. 绝大多数 情况下,这不会给您带来任何性能优势。任何物有所值的 RDBMS 都应该毫不费力地处理巨大的表。

  2. 如果需要,可以对表进行一些分片。同样,由数据库服务器管理;在 SQL 级别(和 ORM),它应该被视为单个表。理想情况下,应该自动处理歧视;如果没有,大多数 RDBMS 允许您在表定义时指定它(或者有时使用 ALTER TABLE 进行调整)

  3. 如果您选择定义分片方法,则每个 RDBMS 都有自己的非标准方法。最好不要将你的 Python 代码与它联系起来;改为在数据库服务器上进行一次调整。

关于database - Django 中的变量表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4727457/

相关文章:

用于桌面数据库应用程序的 Python 框架

database - SubSonic 3.0 两个不同的数据库命名空间问题

python - Django URLs - 尾部斜杠被添加到变量值

python - 在开发中提供静态文件

php - 重复数据库中的数据?

sql - 每当我尝试运行这段代码时,它都会给我一个错误。 [ASP.NET SQL]

sql-server - 每小时备份一部分特定表的最有效和最简单的方法

django - NoReverseMatch 与 {% url ... %} 和关键字参数

python - '>' not supported between instances of ' int' 和 'NoneType' 。表单.is_valid

python - Django 站点加密