dem*_*mhm 7 mysql sql django django-models django-orm
如何在不使用objects.raw()方法的情况下从模型生成此sql查询?DB是MySQL.
SELECT * FROM model_table WHERE MD5(field) = 'my value';
Run Code Online (Sandbox Code Playgroud)
你有两种方式:
第一种方式:额外
额外方法:Entry.objects.extra(where=["MD5(field) = 'my value'"])
优点:快速编码.
缺点:没有索引友好,全扫描,性能不佳.
第二种方式:新领域
在模型上添加新字段field_md5并将其设置为开save.
import hashlib
myModel(models.Model):
field = models.CharField(max_length=30)
field_md5 = models.CharField(max_length=16, editable = false )
def save(self, *args, **kwargs):
self.field_md5 = hashlib.md5.new(self.field).digest()
super(Model, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
优点:快速的表现.
缺点:需要更改数据库.
编辑:在python3使用
...
super().save(*args, **kwargs)
...
Run Code Online (Sandbox Code Playgroud)
代替:
...
super(Model, self).save(*args, **kwargs)
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2946 次 |
| 最近记录: |