如何在 Python 中生成 UUID2024 年 08 月 29 日 | 阅读 9 分钟 在本教程中,我们将讨论如何使用 uuid 模块在 Python 中生成 UUID。在深入探讨此主题之前,让我们先了解 UUID 的基本概念。 引言UUID 是 **通用唯一标识符** 的缩写,也称为 GUID,即全局唯一标识符。它是一个 128 位长的 ID 号,用于唯一地定义文档、用户、资源或信息。UUID 有多种版本;我们将在接下来的部分讨论所有这些版本。
何时使用 UUIDUUID 模块可在以下场景中使用。 在 Web 应用程序中 -
在数据库系统中
Python uuid 模块Python uuid 模块是根据 RFC 4122 实现的,这是一个互联网标准的版权。借助 Python UUID 模块,我们可以生成各种类型的 UUID,如 1、3、4 和 5 版本 UUID。Python 模块支持以下 UUID 版本。
使用 Python UUID 模块生成 UUID让我们使用 Python uuid 模块生成各种版本的 UUID。 使用 uuid1() - 要生成 uuid,我们必须导入 uuid 模块,然后调用 uuid1() 方法。让我们理解下面的例子。 示例 - 1 输出 The random id using uuid1() is : ab2d0fc0-7224-11ec-8ef2-b658b885fb3 UUID 的结构如我们所见,上面的 UUID 中有五个组成部分,每个组成部分长度相同。UUID 的结构格式为 **“8-4-4-4-12”**。 UUID 的字符串表示如下所示 - 让我们分解上述 UUID 的字段
让我们通过另一个例子来理解以字节、整数和十六进制等各种格式生成 UUID。 示例 - 2 输出 The byte Representations of uuid1() are : b'\xb9\xea\xb88s\x0e\x11\xec\xbfv\x86\xa0;\xe4`\x12' int Representation : 247125913120858544596828814248071421970 hex Representation : b9eab838730e11ecbf7686a03be46012 The Components of uuid1() are : Version : 1 Variant : specified in RFC 4122 The Fields of uuid1() are : Fields : (3119167544, 29454, 4588, 191, 118, 148022757711890) The time Component of uuid1() is : Time component : 148022757711890 UUID.time_mid : 29460 UUID.time_hi_version : 4588 UUID.clock_seq_hi_variant: 186 UUID.clock_seq_low : 100 UUID.node : 90979746151630 UUID.time : 138612218401246920 UUID.clock_seq : 14948 UUID.SafeUUID : SafeUUID.unsafe UUID1 的缺点 UUID1 与计算机的 MAC 地址相关联,因此可能对隐私构成威胁。然而,它提供了完全的唯一性。 方法 2:使用 uuid4() 此方法生成随机数,并保证保护隐私。让我们理解下面的例子。 示例 - 输出 The id generated using uuid4() : 53967be6-71e9-4ee9-9912-60d02d2d9b0a uuid1() 与 uuid4uuid1() 保证不会产生任何冲突。通过在不到 100ns 的时间内创建超过 16384 个 uuid1,我们可以创建 UUID 的重复项。它不保证隐私安全。如果您不希望显示您的计算机 MAC 地址,则不建议使用 uuid1()。 uuid4() 方法通过使用加密生成的安全数生成器来生成随机 UUID。它生成更安全的 UUID。当需要在独立计算机上生成 UUID 时,建议使用此方法。 UUID 3 和 UUID 5 用于创建基于名称的 UUID基于名称的 UUID 意味着我们可以使用版本 3 或 5 UUID 生成 UUID。 我们可以使用名称和命名空间创建一系列唯一的 UUID。版本 3 和 5 是对命名空间标识符进行哈希处理并附带名称。 uuid3() 方法生成一个基于命名空间标识符和字符串的 MD5 哈希值的 UUID。另一方面,uuid5() 方法生成基于命名空间标识符的 SHA-1 哈希技术的 UUID。 以下是 uuid3() 或 uuid5() 定义的命名空间标识符。
让我们通过下面的例子来使用各种主机名和命名空间生成 UUID3 和 UUID5。 示例 - 输出 Generate uuid 3 version using name as javatpoint.com and namespace as uuid.NAMESPACE_DNS 98bbe92a-b38f-3289-a4b4-80ec1cfdf8cb Generate uuid 5 version using name as javatpoint.com and namespace as uuid.NAMESPACE_DNS 0fc2d4dd-7194-5200-8050-f0ca1dd04b3d Generate uuid 3 version using name as tutorialandexample.com and namespace as uuid.NAMESPACE_DNS 6f6fe445-1c4c-3874-854e-c79f617effe5 Generate uuid 5 version using name as tutorialandexample.com and namespace as uuid.NAMESPACE_DNS 781c3cc9-4965-5fdc-9c40-89bb0ea8ec0d 示例 - 2:使用不同的命名空间生成 UUID 3 和 UUID 5 输出 Generate uuid using namespace uuid 3 is 6ddc8513-dc7b-3b37-b21b-a1ca9440fe14 uuid 5 is 8d6a1314-170a-559c-afe7-b68d1d7ee9ac uuid 3 is 5dcfef3e-bcc9-38bc-b989-4a7516a05974 uuid 5 is 3a4a6c31-8d6a-5583-8497-d2ed90b1f13a uuid 3 is 84d9730f-330f-3634-9542-4acfcdcd6c60 uuid 5 is 899f3d4b-6095-5ee6-9805-68e0c51dcb39 uuid 3 is b140fa3b-983a-3efe-85ef-92f07d5e09a0 uuid 5 is 73b723ef-5c5e-5eb4-8fcc-aabb5c4e7803 uuid3 和 uuid5 的行为
示例 - 3 输出 Generate version 3 uuid using name as pynative.com and namespace as uuid.NAMESPACE_DNS 98bbe92a-b38f-3289-a4b4-80ec1cfdf8cb Generate version 3 uuid using name as pynative.com and namespace as uuid.NAMESPACE_DNS 98bbe92a-b38f-3289-a4b4-80ec1cfdf8cb 如何在 Python 中将字符串转换为 UUID,将 UUID 转换为字符串?uuid.uuid1() 方法返回 UUID 类的实例。我们可以使用 str() 方法获取 UUID 的字符串表示形式。相应的字符串格式可用于比较或操作。让我们理解下面的例子。 示例 - 输出 The version 1 UUID is cdca7930-7488-11ec-a0c4-4984d2946471 UUID of version 1 in String format cdca7930-7488-11ec-a0c4-4984d2946471 Version 1 UUID in String format cdca7930-7488-11ec-a0c4-4984d2946471 Version 1 UUID in String removing dashes cdca7930748811eca0c44984d2946471 现在,我们将从字符串创建 UUID。 有时,我们收到的 UUID 是字符串格式的。我们的应用程序需要将其转换为 UUID 类实例以供某些应用程序使用。让我们理解下面的例子来转换字符串格式的 UUID。 示例 - 输出 UUID is c7c9de0a-d676-11e8-8d62-ccaf789d94a0 Time component is 137595594281180682 UUID is 018c168c-d509-11e8-b096-ccaf789d94a0 Time component is 137594023292180108 UUID is e5e9394c-daed-498e-b9f3-69228b44fbfa Time component is 688728508333635916 示例 - 2 输出 string UUID urn:uuid:f2f84497-b3bf-493a-bba9-7c68e6def80b {417a5ebb-01f7-4ed5-aeac-3d56cd5037b0} 2115773a-5bf1-11dd-ab48-001ec200d9e0 converted to uuids f2f84497-b3bf-493a-bba9-7c68e6def80b 417a5ebb-01f7-4ed5-aeac-3d56cd5037b0 2115773a-5bf1-11dd-ab48-001ec200d9e0 sorted value 2115773a-5bf1-11dd-ab48-001ec200d9e0 417a5ebb-01f7-4ed5-aeac-3d56cd5037b0 f2f84497-b3bf-493a-bba9-7c68e6def80b 生成可重现的 UUID如前所述,UUID 有各种属性。我们可以使用其任何属性来使用相同的 UUID。使用 **uuid 模块**,我们可以使用种子值随时生成相同的 **uuid**。种子值也可用于生成相同的 UUID。让我们同时理解这两个概念。 以下输入可用于创建 UUID 实例。
使用以上任何一个值,都可以生成 UUID。让我们看下面的例子,我们在其中使用所有这些值来生成相同的 UUID。 示例 - 输出 Generating UUID from int UUID is b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 UUID from URN UUID is b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 UUID from bytes UUID is b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 UUID from bytes_len UUID is b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 UUID from fields UUID is b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 使用种子重现 UUID顾名思义,Faker 模块为我们生成假数据。我们已经使用 faker 模块来重复生成相同的 UUID。让我们理解下面的例子。 示例 - 输出 b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 结论在本教程中,我们详细讨论了 uuid 模块,并了解了如何生成各种 UUID。UUID 帮助我们在应用程序/数据库中定义唯一性,也有助于为文档、主机、应用程序、客户端和其他情况定义标识符。 |
我们请求您订阅我们的新闻通讯以获取最新更新。