MK8*_*K87 2 sql django django-models mariadb python-3.x
我有一个理解问题,因为我正在考虑如何在Django或数据库中管理我的数据.
这是一张每天约2000行和8列的表格.我想将过去10年的所有日常数据存储到数据库中,并每天添加新数据.为每天创建数据库表是个好主意.在Django中,为每个模型创建了一个表,但是发明者并不打算在Django中创建5000个模型.
这是我使用原始SQL创建表的唯一方法吗?或者有没有我在文档中没有发现的方法?
老实说,每天一张表并不是 Django 的最佳方式,因为它会使整个框架更难使用:
如果速度是您每天保留一张表的原因,我只会使用一张表,并在日期字段上使用数据库索引。它可能会慢一点,但它会让你的生活变得更轻松。
您需要将其添加到您的模型定义中:
class Meta:
indexes = [
models.Index(fields=['day',]),
]
Run Code Online (Sandbox Code Playgroud)
该手册更详细地解释了它:https ://docs.djangoproject.com/en/1.11/ref/models/indexes/
对您提出的问题的简短回答是"是的,最快的方法是使用原始SQL",或者是动态创建新模型并运行makemigrations的变体.
也就是说,在没有关于您的问题或任务的更多细节的情况下,我必须立即质疑为什么要动态创建表.对于初学者来说,这将失去Django提供的与架构的良好ORM连接,而无需更多技巧(自动生成的模型,每日makemigrations,迁移期间可能存在错位的数据,您需要专门的代码等).一些想法:
如果这个问题的前提是您遇到了速度问题,那么我建议您需要仔细考虑数据模型的规范化,并考虑需要添加索引的位置.例如,如果您的默认数据模型不能提供正确的索引,那么使用@ lodb(快速手指!)建议并手动告诉Django的ORM创建索引:
class Meta:
indexes = [
models.Index(fields=['day',]),
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1035 次 |
| 最近记录: |