通用唯一字典序可排序标识符
项目描述
一个 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
要查看build和show命令的所有标志,请使用--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_ulid-2.7.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 18eb595885140851a490a95b0da4447911ff69fa9f434732067b97f6956f9fe9 |
|
MD5 | 390d092baac0c3d7c23e0f8efc5dbe07 |
|
BLAKE2b-256 | a9c503acac11f80d718da98201dadf6fdcf5aa4001e83bb61a65b6b91baa489c |
关闭
python_ulid-2.7.0-py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | c81658e382f69bad8c6d365155c4ae21843ae4226b94f72c12d7adcbb545a251 |
|
MD5 | af18db3c704f6837c9f9fece09f24e65 |
|
BLAKE2b-256 | e24890be1411fdbd38d291fa9e97621a60b5576d9122449bce4505ddfcfc9328 |