提供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中初始化为null   web应用程序的java功能,用于处理用户从SFTP服务器下载文件的请求   连接如何在Java中连接两个字符串数组   java如何正确使用Actionlistener事件的输入   [JPA][JBoss7.1]Java为两个带有JPA注释的表扩展了class 2 Id   在java中计算十进制值时遇到问题   java自动生成的捆绑包文件不是在使用I18N4Vaadin的Vaadin项目中创建的   java Spring控制器向ajax请求返回视图或空字符串   java扫描器在我的机器上不工作   java如何获取应用程序二进制文件的路径?   javac:输出值行为   如何在没有身份验证的情况下使用Google电子表格API Java库获取公共Google电子表格数据   java管理多个传出TCP连接   java无法为安卓:onClick执行方法。添加到数据库   JAVA文件中的ubuntu JFlex编译错误   java是执行各种字符串操作的有效方法   java发送文件和json Spring引导和角度   REST+DAO对象的java Mockito   java SocketException:两个客户端并行运行时连接重置