提供ulid规范实现的python库

py-ulid的Python项目详细描述


py ulid-python中的ulid实现

ulid logo

Documentation Status

PyulID库是Python中ULID(通用唯一的字典式可识别标识符)规范的最小的和独立的实现。 有关详细信息,请参阅official specification

uuid对于许多用例来说可能是次优的,因为:

  • 它不是编码128位随机性的最有效的字符方法
  • uuid v1/v2在许多环境中都是不切实际的,因为它需要访问唯一、稳定的mac地址
  • uuid v3/v5需要一个唯一的种子并生成随机分布的id,这可能导致许多数据结构中出现碎片
  • Uuid v4除了随机性之外,没有其他信息可以导致许多数据结构中的碎片化

相反,这里建议ulid:

  • 与uuid的128位兼容性
  • 每毫秒1.21E+24个独特的ULID
  • 字典式的排序!
  • 规范地编码为26个字符的字符串,而不是36个字符的uuid
  • 使用Crockford的Base32提高效率和可读性(每个字符5位)
  • 不区分大小写
  • 无特殊字符(URL安全)
  • 单调排序顺序(正确检测和处理相同毫秒)

安装

您可以从PyPi安装py ulid库

pip install py-ulid

py ulid库可以在python>;=3.5的任何版本中使用,并且不需要任何额外的包或模块。

如何使用

要生成ulid,只需运行generate()函数

fromulidimportULID#Instantiate the ULID classulid=ULID()ulid.generate()#01BX5ZZKBKACTAV9WEVGEMMVRZ

播种时间

可以用种子时间实例化ulid类的实例,该种子时间将为时间组件输出相同的字符串。当迁移到ulid时,这可能很有用

fromulidimportULID#Instantiate the ULID classulid=ULID(1469918176385)ulid.generate()#01ARYZ6S41TSV4RRFFQ69G5FAV

单调ulids

fromulidimportMonotonic#Instantiate the Monotonic Classulid=Monotonic()# Same timestamp when calls are made within the same# millisecond and least-significant random bit is incremented by 1ulid.generate()#01DC8Y7RBV4RSXX0437Z1RQR11ulid.generate()#01DC8Y7RBV4RSXX0437Z1RQR12ulid.generate()#01DC8Y7RBV4RSXX0437Z1RQR13ulid.generate()#01DC8Y7RBV4RSXX0437Z1RQR14ulid.generate()#01DC8Y7RBV4RSXX0437Z1RQR15ulid.generate()#01DC8Y7RBV4RSXX0437Z1RQR16ulid.generate()#01DC8Y7RBV4RSXX0437Z1RQR17ulid.generate()#01DC8Y7RBV4RSXX0437Z1RQR18ulid.generate()#01DC8Y7RBV4RSXX0437Z1RQR19

现有技术

部分灵感来自:

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java嵌套循环打印一个数字,旁边有相同数量的星号   java JodReports替代方案   java如何将模型类parcelable对象从片段传递到活动?   java JCS缓存删除功能不删除特定元素   如何打开。Java的dll文件。   java在这种情况下如何选择聚合根?   java从CellEditorListener获取编辑的TreeNode   Java到web服务和mysql   从openssl ec在Java中创建公钥时出现加密无效密钥异常   Java数组:添加多个数组的元素时忽略空数组   java在初始化后向fragment发送数据   JButtons的java数组正在返回void   若联接列不包含特定值,则java JPA条件生成器仅返回实体   java ActionBar问题:NPE   java Portlet是被广泛使用还是非常罕见?