Shortuuid —— 一个超好用的 Python 库

继续我们的有趣的 Python 库之旅 ——

一个小小的库,或许能避免重复造轮子

一个不显眼的功能,也许能在关键时刻拯救我们

一个出乎意料的方法,或许能激发更多创意灵感

一个独特的技能,也许能成为我们的守护神……


想象一下,你正在设计一个系统,需要生成大量的唯一 ID,作为数据库条目标识或在网络上进行共享。你不仅希望这些 ID 具有全局唯一性,而且还要它们简短易传输和记忆。

shortuuid 就是你需要的解决方案,它能够为你生成简洁而独特的 UUID

什么是 UUID

UUID(Universally Unique Identifier,全局唯一标识符)在分布式系统中识别信息非常关键。每一份资源——不论是视频、用户资料还是商品,都需要一个与众不同的标识符。

传统的 UUID 使用 36 个字符的字符串表示,这在确保唯一性的同时,却因其长度和难以记忆而带来不便。这就是 shortuuid 发挥作用的地方。

什么是 shortuuid?

shortuuid 是一个开源 Python 库,用于生成更紧凑、无歧义且适合 URL 的 UUID。与传统 36 位的 UUID 相比,shortuuid 生成的 ID 长度通常在 22 至 25 个字符之间。

在 Python3 中,shortuuid 支持从 3.5 到最新版本的 Python。

应用场景:

  • 网络 URL: 简短的 UUID 在 URL 中使用更为简洁。

  • 数据库主键: shortuuid 可以作为数据库记录的唯一主键。

  • 邀请码或礼品码: 游戏或应用中一次性使用码的生成非常合适。

项目地址:https://github.com/skorokithakis/shortuuid/

安装

通过以下命令在 Python 环境中安装 shortuuid

pipinstallshortuuid

安装好后,让我们深入了解一下 shortuuid 库,包括它如何生成短 UUID,以及如何将这些 UUID 应用到实际中去。

基本功能

生成 shortuuid

要生成一个短而唯一的 UUID:

importshortuuid #生成一个新的shortUUID suuid=shortuuid.ShortUUID().random(length=22) print(suuid) #输出:3t49Ps42SFBPvZJaQpTASt

使用基于名称的 UUID 版本 5

若需要基于特定名称(DNS 或 URL)生成 UUID,可以使用以下方式:

shortuuid.uuid(name="example.com") #输出'exu3DTbj2ncsn9tLdLWspw' shortuuid.uuid(name="<http://example.com>") #输出'4MbV4Zb37VYJocNpNcZvoT'

生成加密级别的随机字符串

使用 os.urandom() 内部生成:

shortuuid.ShortUUID().random(length=22) #输出'RaF56o2r58hTKT7AYS9doj'

查看和设置生成 UUID 的字母表

查看当前字母表,或者设置自定义字母表:

shortuuid.get_alphabet()#获取字母表 #输出'23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' shortuuid.set_alphabet("aaaaabcdefgh1230123")#设置自定义字母表会自动去除重复字符 shortuuid.uuid()#生成UUID #输出'0agee20aa1hehebcagddhedddc0d2chhab3b' shortuuid.get_alphabet() #输出'0123abcdefgh'

处理已有的 UUID

若想转换已存在的 UUID,可以用 encode()decode()

importuuid u=uuid.uuid4() s=shortuuid.encode(u) print(s) #输出'MLpZDiEXM4VsUryR9oE8uc' shortuuid.decode(s)==u#转回UUID比较是否相同 #输出True

高级功能

类使用

若需要为不同线程使用不同字母表的 UUID 生成,可以这样做:

su=shortuuid.ShortUUID(alphabet="01345678") su.uuid() #输出'034636353306816784480643806546503818874456'

初始化参数 alphabet 可选,默认为 23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

命令行

在终端快速生成短 UUID:

$shortuuid fZpeF6gcskHbSpTgpQCkcJ

在 Django 中的简洁字段

shortuuid 包含了 Django 字段,它默认生成随机短 UUID:

fromshortuuid.django_fieldsimportShortUUIDField classMyModel(models.Model): id=ShortUUIDField( length=16, max_length=40, prefix="id_", alphabet="abcdefg1234", primary_key=True, ) api_key=ShortUUIDField()#默认长度的短UUID

字段类似 CharField,需要 lengthalphabet 参数。

兼容性说明

ShortUUID 1.0.0 之前的版本生成的 UUID 索引顺序与现版本不同。如果你使用旧版存储了 UUID,需要在 decode() 中设置 legacy=True。未来这个选项将被移除,需转换 UUID 格式:

new_uuid_str=encode(decode(old_uuid_str,legacy=True))

总结

shortuuid 在确保全局唯一性的同时,简化了字符数量,使得在各种场景下使用更加便捷。

你现在可以将其集成到项目中,用于生成数据库主键、缩短 URL 或创建友好的邀请码。通过本教程,你会发现 shortuuid 强大而独特的用途。

希望 Python 库系列教程,不仅增强了你使用这个库的能力,而且激发了你解决问题的热情。记住,编程不仅是技术行为,更是解决问题的艺术!

比心!


示例代码:
**https://github.com/alisx/amazing_python_lib/blob/main/shortuuid_code

以上就是“Shortuuid —— 一个超好用的 Python 库”的全部内容,希望对你有所帮助。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python必备开发工具

img

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

五、Python练习题

检查学习结果。

img

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

img

最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值