跳转到主要内容

通用唯一字典序可排序标识符

项目描述

一个 ULID 是一个 通用唯一字典序可排序标识符。它是

  • 128位与 UUID 兼容

  • 每毫秒1.21e+24个唯一的ULID

  • 字典序可排序!

  • 规范编码为26个字符的字符串,而UUID是36个字符

  • 使用Crockford的base32以提高效率和可读性(每字符5位)

  • 不区分大小写

  • 没有特殊字符(URL安全)

通常ULID的结构如下

 01AN4Z07BY      79KA1307SR9X4MV3
|----------|    |----------------|
 Timestamp          Randomness
   48bits             80bits

有关更多信息,请参阅原始 规范

安装

使用 pip 安装库

$ pip install python-ulid

要包含Pydantic支持,安装可选依赖项如下

$ pip install python-ulid[pydantic]

基本用法

从当前时间戳创建新的 ULID 对象

>>> from ulid import ULID
>>> ULID()
ULID(01E75HZVW36EAZKMF1W7XNMSB4)

或使用命名构造函数之一

>>> import time, datetime
>>> ULID.from_timestamp(time.time())
ULID(01E75J1MKKWMGG0N5MBHFMRC84)
>>> ULID.from_datetime(datetime.datetime.now())
ULID(01E75J2XBK390V2XRH44EHC10X)

有几种方法可以对 ULID 对象进行编码(例如字符串、十六进制、整数、字节、UUID)

>>> str(ulid)
'01BTGNYV6HRNK8K8VKZASZCFPE'
>>> ulid.hex
'015ea15f6cd1c56689a373fab3f63ece'
>>> int(ulid)
1820576928786795198723644692628913870
>>> bytes(ulid)
b'\x01^\xa1_l\xd1\xc5f\x89\xa3s\xfa\xb3\xf6>\xce'
>>> ulid.to_uuid()
UUID('015ea15f-6cd1-c566-89a3-73fab3f63ece')

还可以直接访问 ULID 的时间戳组件,无论是UNIX纪元还是 datetime.datetime

>>> ulid.timestamp
1505945939.153
>>> ulid.datetime
datetime.datetime(2017, 9, 20, 22, 18, 59, 153000, tzinfo=datetime.timezone.utc)

Pydantic集成

ULID类可以直接用于流行的数据验证库Pydantic,如下所示:

from pydantic import BaseModel
from ulid import ULID


class Model(BaseModel):
  ulid: ULID

model = Model(ulid="DX89370400440532013000")  # OK
model = Model(ulid="not-a-ulid")  # Raises ValidationError

命令行界面

该软件包附带一个命令行界面(CLI),可以通过脚本名ulid或作为Python模块python -m ulid来调用。CLI允许您生成、检查和转换ULID,例如:

$ ulid build
01HASFKBN8SKZTSVVS03K5AMMS

$ ulid build --from-datetime=2023-09-23T10:20:30
01HB0J0F5GCKEXNSWVAD5PEAC1

$ ulid show 01HASFKBN8SKZTSVVS03K5AMMS
ULID:      01HASFKBN8SKZTSVVS03K5AMMS
Hex:       018ab2f9aea8ccffacef7900e6555299
Int:       2049395013039097460549394558635823769
Timestamp: 1695219822.248
Datetime:  2023-09-20 14:23:42.248000+00:00

对于show命令,有多个标志可以选择特定的输出格式,例如:

$ ulid show --datetime 01HASFKBN8SKZTSVVS03K5AMMS
2023-09-20 14:23:42.248000+00:00

特殊字符-允许从stdin读取值,以便可以将它们管道化。例如:

$ echo 01HASFKBN8SKZTSVVS03K5AMMS | ulid show --uuid -
018ab2f9-aea8-4cff-acef-7900e6555299

$ date --iso-8601 | python -m ulid build --from-datetime -
01HAT9PVR02T3S13XB48S7GEHE

要查看buildshow命令的所有标志,请使用--help选项(例如ulid show --help)。

其他实现

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源分布

python_ulid-2.7.0.tar.gz (25.0 kB 查看散列)

上传时间

构建分布

python_ulid-2.7.0-py3-none-any.whl (10.8 kB 查看散列)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面