ITADN
sqids/sqids-python
sqids/sqids-python · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Sqids Python

PyPI package Github Actions Downloads

Sqids(发音为“squids”)是一个小型库,可帮助你从数字生成唯一标识符。它适用于链接缩短、快速生成安全且适合 URL 使用的标识符,以及将其解码回数字以便更快地查询数据库。

功能特点:

  • 编码多个数字——从一个或多个非负数字生成简短的标识符
  • 快速解码——轻松将标识符解码回数字
  • 唯一标识符——通过一次字母随机排序来生成唯一标识符
  • 标识符补齐——设置最小长度以使标识符更加统一
  • URL 安全——自动生成的标识符不包含常见的脏话字符
  • 随机化输出——顺序输入会生成非连续的标识符
  • 多种实现方式——支持40 多种编程语言

🧰 应用场景

适用场景:

  • 为公共 URL 生成标识符(例如:链接缩短)
  • 为内部系统生成标识符(例如:事件跟踪)
  • 解码以便更快地查询数据库(例如:通过主键查询)

不适用于:

  • 敏感数据(这不是一个加密库)
  • 用户标识符(解码后可能会暴露用户数量)

🚀 入门指南

通过 PyPI 安装该包,例如使用 pip:

pip install sqids

sqids 包中导入 Sqids 类:

from sqids import Sqids
sqids = Sqids()

👩‍💻 示例

简单的编码与解码:

sqids = Sqids()
id = sqids.encode([1, 2, 3]) # "86Rf07"
numbers = sqids.decode(id) # [1, 2, 3]

注意 🚧 由于算法的设计,多个 ID 可能会解码为相同的数字序列。如果您的设计要求 ID 必须是唯一的,那么您需要手动对解码后的数字进行重新编码,并检查生成的 ID 是否一致。

为 ID 设定最小长度要求:

sqids = Sqids(min_length=10)
id = sqids.encode([1, 2, 3]) # "86Rf07xd4z"
numbers = sqids.decode(id) # [1, 2, 3]

通过提供自定义字母表来随机化 ID:

sqids = Sqids(alphabet="FxnXM1kBN6cuhsAvjW3Co7l2RePyY8DwaU04Tzt9fHQrqSVKdpimLGIJOgb5ZE")
id = sqids.encode([1, 2, 3]) # "B4aajs"
numbers = sqids.decode(id) # [1, 2, 3]

防止特定单词出现在自动生成的 ID 的任何位置:

sqids = Sqids(blocklist=["86Rf07"])
id = sqids.encode([1, 2, 3]) # "se8ojk"
numbers = sqids.decode(id) # [1, 2, 3]

📝 许可证

MIT