继续我们的有趣的 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
,需要 length
和 alphabet
参数。
兼容性说明
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必备开发工具
三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、Python练习题
检查学习结果。
六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
最后祝大家天天进步!!
上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。