因此,我不确定是否将此作为Django或SQL问题,但我有以下模型:
class Picture(models.Model):
weight = models.IntegerField(default=0)
taken_date = models.DateTimeField(blank=True, null=True)
album = models.ForeignKey(Album, db_column="album_id", related_name='pictures')
我可能有一个子集的图片记录以千为单位编号,我需要按taken_date
排序,并通过设置weight
值来保持顺序。你知道吗
例如在Django:
pictures = Picture.objects.filter(album_id=5).order_by('taken_date')
for weight, picture in enumerate(list(pictures)):
picture.weight = weight
picture.save()
现在对于我期望的1000张唱片来说,这可能需要很长时间。有没有更有效的方法来执行这项任务?我假设我可能需要求助于SQL,因为我最近了解到Django在数据库批量操作方面不一定“还没有”。你知道吗
好吧,我在MySQL中整理了以下内容,效果很好,但是我猜没有办法用Django ORM来模拟这个?你知道吗
我会把这个问题留一段时间,以防万一有什么很棒的解决方案或应用程序可以解决这个问题,但是上面对~6000条记录的查询需要0.11秒
注意如果您在MySQL中有以下设置,上述查询将在MySQL中生成警告:
要解决此问题,必须将
binlog_format
设置更改为mixed
或row
。mixed
可能更好,因为这意味着除了需要row
来避免上述警告的情况外,您仍然可以对所有内容使用statement
。你知道吗相关问题 更多 >
编程相关推荐