首页 > 数据库技术 > 详细

对数据库ID进行散裂化计算

时间:2019-08-02 10:18:46      阅读:77      评论:0      收藏:0      [点我收藏+]
import basehash


class Hasher:
    """
    对数据库ID进行散列化计算
    """
    base36 = basehash.base62(11)

    @classmethod
    def from_model(cls, obj):
        if obj.pk is None:
            return None
        return cls.make_hash(obj.pk)

    @classmethod
    def make_hash(cls, object_pk):
        return cls.base36.hash(%(object_pk)d % {
            object_pk: object_pk
        })

    @classmethod
    def to_object_pk(cls, obj_hash):
        unhashed = %d % cls.base36.unhash(obj_hash)
        object_pk = int(unhashed)
        return object_pk
class BaseModel(models.Model):
    """自定义Model基类"""
    create_at = models.DateTimeField(auto_now_add=True, verbose_name=创建时间)
    update_at = models.DateTimeField(auto_now=True, verbose_name=更新时间)
    delete_at = models.DateTimeField(null=True, blank=True, default=None, verbose_name=删除时间)

    class Meta:
        abstract = True

    @property
    def hash(self):
        return Hasher.from_model(self)

 

对数据库ID进行散裂化计算

原文:https://www.cnblogs.com/52-qq/p/11286570.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!