【Python】 uuid生成唯一ID

uuid

  uuid是128位的全局唯一标识符(univeral unique identifier),通常用32位的一个字符串的形式来表现。有时也称guid(global unique identifier)。python中自带了uuid模块来进行uuid的生成和管理工作。(具体从哪个版本开始有的不清楚。。)

  python中的uuid模块基于信息如MAC地址、时间戳、命名空间、随机数、伪随机数来uuid。具体方法有如下几个:  

  uuid.uuid1()  基于MAC地址,时间戳,随机数来生成唯一的uuid,可以保证全球范围内的唯一性。

  uuid.uuid2()  算法与uuid1相同,不同的是把时间戳的前4位置换为POSIX的UID。不过需要注意的是python中没有基于DCE的算法,所以python的uuid模块中没有uuid2这个方法。

  uuid.uuid3(namespace,name)  通过计算一个命名空间和名字的md5散列值来给出一个uuid,所以可以保证命名空间中的不同名字具有不同的uuid,但是相同的名字就是相同的uuid了

  uuid.uuid4()  通过伪随机数得到uuid,是有一定概率重复的

  uuid.uuid5(namespace,name)  和uuid3基本相同,只不过采用的散列算法是sha1

  一般而言,在对uuid的需求不是很复杂的时候,uuid1方法就已经够用了,使用方法如下:

#coding=utf-8

import uuid

name = ‘test_name‘
namespace = ‘test_namespace‘

print uuid.uuid1()
print uuid.uuid3(namespace,name)
print uuid.uuid4()
print uuid.uuid5(namespace,name)
时间: 2024-10-01 02:41:12

【Python】 uuid生成唯一ID的相关文章

python学习之-- 生成唯一ID

以下以2种方法生成唯一ID def uuid_method(): """第一种方法""" import uuid return str(uuid.uuid1()) print(uuid_method()) def time_method(): """第二种方法""" import time, hashlib m = hashlib.md5() m.update(bytes(str(tim

php 生成唯一id的几种解决方法

网上查了下,有很多的方法 1.md5(time() . mt_rand(1,1000000)); 这种方法有一定的概率会出现重复 2.php内置函数uniqid() uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. w3school参考手册有一句话:"由于基于系统时间,通过该函数生成的 ID 不是最佳的.如需生成绝对唯一的 ID,请使用 md5() 函数". 下面方法返回结果类似:5DDB650F-4389-F4A9-A100-501EF1348872 functi

PHP生成唯一ID的三种方法

1.md5(time() . mt_rand(1,1000000)); 这种方法有一定的概率会出现重复 2.php内置函数uniqid() uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. w3school参考手册有一句话:"由于基于系统时间,通过该函数生成的 ID 不是最佳的.如需生成绝对唯一的 ID,请使用 md5() 函数". 下面方法返回结果类似:5DDB650F-4389-F4A9-A100-501EF1348872 com_create_guid()是p

PHP获取时间戳和微秒数以及生成唯一ID

microtime函数 描述:返回当前Unix时间戳和微秒数 语法:mixed microtime( [ bool $get_as_float ] ) //直接输出 echo microtime(); //得到的是 如:0.26672100 1585622985 前面是当前微秒数,后面是正常时间戳,中间以空格分隔开 //如果带有参数(布尔型参数) echo microtime(true); //输出结果:1585623020.7408 刚才的微秒数就会以浮点数的形式表现在原有的时间戳之后 浮点数

C# 根据twitter的snowflake算法生成唯一ID

C# 版算法: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Demo 8 { 9 10 /// <summary> 11 /// 根据twitter的snowflake算法生成唯一ID 12 /// snowflake算法 64 位 13 /// 0---000

PHP生成唯一ID的方法

PHP自带生成唯一id的函数:uniqid() 它是基于当前时间微秒数的 用法如下: echo uniqid(); //13位的字符串 echo uniqid("php_"); //当然你可以加上前缀 echo uniqid("php_", TRUE); //如果第二个参数more_entropy为true则生成23位字符串 但是它生成的标识有可能不是唯一的,所以很多人会: //这是第一种简单的方法,当然用sha1()函数也可以. echo md5(uniqid()

利用Java.util.UUID来生成唯一ID(用来做数据库主键好用)

UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址.纳秒级时间.芯片ID码和许多可能的数字.由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得

在分布式场景,生成唯一ID

在分布式环境下生成数据库主键是一件比较麻烦的事情,这里简单总结下,以供以后使用. 数据库自增长序列或字段 每个服务器使用自增主键,不同服务器的步长不一样,比如 A 服务器生成 1,3,5,7... B 服务器生成 2,4,6,8.... 缺点:难以扩展.合并数据库时非常麻烦.分库分表时难以处理. UUID 常见的方式.可以利用数据库也可以利用程序生成,一般来说全球唯一. 缺点:没有排序,无法保证趋势递增.查询效率比较低.存储量比较大.不可读. Redis 生成 ID 使用 Redis 的原子性生

生成唯一id

有时候在某些业务中需要先生成一个唯一id,然后再进行存储.可以使用一下的方法: 1.借助mysql或者redis这类能够自增的数据库 这种方式可以满足需求但是需要跟数据库有一次额外的操作.对性能有一定的影响 2.毫秒级的时间加上一个随机数. 这种方式不需要借助数据,性能高些,但是随机数可能会重复,所以结果可能不是全局唯一的 3.毫秒级的时间加上进程id 这种方式可以既满足性能,又是唯一的 对于多核的cpu,每个cpu可以同时执行不同的进程,而每个进程有唯一的id,所以时间可能相同,但是进程的id