akm*_*akm 3 mysql django django-models
我有多个字段的django模型,它被映射到MySQL数据库,现在模型中有一个日期时间字段,我想在其中设置分区.
该模型如下所示:
class Packet(models.Model):
device = models.ForeignKey(Device)
packet_time = models.DateTimeField(default=timezone.now())
# Location Details
signal = models.CharField(max_length=2, default='A')
lat = models.FloatField(default=None, null=True)
lat_indicator = models.CharField(max_length=1, default='')
lng = models.FloatField(default=None, null=True)
lng_indicator = models.CharField(max_length=1, default='')
address = models.CharField(max_length=64, default='NA')
speed = models.FloatField(default=None, null=True)
orientation = models.FloatField(default=None, null=True)
#House Keeping Items
dor = models.DateTimeField(default=timezone.now()) # <= Want to partition this for weekly basis.
dirty = models.BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)
请告诉我如何实现这一目标.
正如Max的评论中所提到的,django-db-parti不赞成使用architech.这里提供了 Github链接,并提供了有关readthedocs的更多文档
原答案:
在Django的DB-汉邦包存在,这似乎符合您的标准.Github链接在这里.
该文档的MySQL部分指出:
MySQL在Django DB Parti中的分区实现是以混合方式完成的,一半在python级别,一半在数据库级别.不幸的是MySQL不支持触发器中的动态sql或触发器中调用的函数,因此自动创建分区的唯一方法是在python级别计算所有内容,然后根据计算创建所需的sql语句并将该语句发布到数据库.
并具有以下限制
- 并非所有分区类型都受支持.Django DB Parti的下一个版本中将添加新类型.
- 分区不适用于批量插入(即Django的bulk_create()方法),因为它不会调用此后端依赖的模型的save()方法.目前没有已知的方法来消除此限制.
- 新的分区只能从低到高创建,您可以使用MySQL的特殊命令REORGANIZE PARTITION来解决这个问题,您需要从数据库控制台发出它.您可以在MySQL的文档中阅读更多相关信息.我们计划在Django DB Parti的未来版本之一中删除此限制.
分区的配置发生在模型的Meta类中.
| 归档时间: |
|
| 查看次数: |
2434 次 |
| 最近记录: |