Python生成简短的唯一ID

GUID生成的ID太长, 不方便使用, 我想生成一个短的, 最好不要有特殊字符, 另外, 只在本机使用, 不跨网络, 所以我使用当前时间作为生成的ID, 为了使生成的ID更短一些, 对它进行重新编码; 另外, 为防止短时间内有重复的ID, 记录上次生成的ID并进行重复判断.
代码如下:

def GenerateId()->str:
    '''生成唯一ID标记, 由大写字母和数字组成, 形如:AGEPAW5WOM'''
    def _Tmp()->str:
        '''根据毫秒数生成唯一ID'''
        # 获取当前时间的时间戳(毫秒级)
        milliseconds = int(time.time() * 1000)
        # 将整数转换为字节串
        num_bytes = milliseconds.to_bytes((milliseconds.bit_length() + 7) // 8, 'big')
        # 生成唯一ID, 由大写字母和数字组成
        short_uid = base64.b32encode(num_bytes).decode('utf-8').rstrip('=')
        return short_uid
    short_uid = _Tmp()
    # 如果生成的ID和上次相同, 则等待一段时间重新生成
    if _Vars.LastId!=None and short_uid==_Vars.LastId:
        time.sleep(0.001)   # 等待1毫秒, 肯定没有问题了
        short_uid = _Tmp()
    _Vars.LastId = short_uid
    return short_uid

最后生成的ID形如:AGEPAW5WOM, 只有10个字符.

posted @ 2023-06-25 11:14  顺其自然,道法自然  阅读(363)  评论(0编辑  收藏  举报