UUID Generator
简单、安全的 UUID 生成工具。支持多种 UUID 版本和格式。
适用场景
| 场景 | 示例 |
|---|---|
| 数据库主键 | "给我生成一个 UUID 做 ID" |
| API 请求追踪 | "生成 request ID" |
| 文件名去重 | "生成唯一文件名" |
| 批量生成 | "给我 10 个 UUID" |
| 验证格式 | "检查这个字符串是不是 UUID" |
使用方法
1. 生成单个 UUID v4(最常用)
UUID v4 是随机生成的,最常用:
python -c "import uuid; print(uuid.uuid4())"
输出示例:
550e8400-e29b-41d4-a716-446655440000
2. 生成无连字符格式(32位)
用于数据库、URL 参数等紧凑场景:
python -c "import uuid; print(uuid.uuid4().hex)"
输出示例:
550e8400e29b41d4a716446655440000
3. 批量生成多个 UUID
python -c "
import uuid
count = 5 # 修改数量
for i in range(1, count + 1):
print(f'{i}. {uuid.uuid4()}')
"
输出示例:
1. 550e8400-e29b-41d4-a716-446655440000
2. 6ba7b810-9dad-11d1-80b4-00c04fd430c8
3. 6ba7b811-9dad-11d1-80b4-00c04fd430c8
4. 6ba7b812-9dad-11d1-80b4-00c04fd430c8
5. 6ba7b813-9dad-11d1-80b4-00c04fd430c8
4. 生成带前缀的 UUID(用于命名空间)
python -c "
import uuid
prefix = 'user' # 修改前缀
uid = str(uuid.uuid4())[:8] # 取前8位
print(f'{prefix}_{uid}')
"
输出示例:
user_550e8400
5. 验证字符串是否为有效 UUID
python -c "
import uuid
def is_valid_uuid(val):
try:
uuid.UUID(str(val))
return True
except ValueError:
return False
# 测试
test_values = [
'550e8400-e29b-41d4-a716-446655440000',
'550e8400e29b41d4a716446655440000',
'not-a-uuid',
'12345'
]
for val in test_values:
result = '✓ Valid' if is_valid_uuid(val) else '✗ Invalid'
print(f'{val}: {result}')
"
6. 比较两个 UUID 是否相同
python -c "
import uuid
uuid1 = uuid.uuid4()
uuid2 = uuid.uuid4()
print(f'UUID 1: {uuid1}')
print(f'UUID 2: {uuid2}')
print(f'相同: {uuid1 == uuid2}')
"
7. 从字符串解析 UUID
python -c "
import uuid
uuid_string = '550e8400-e29b-41d4-a716-446655440000'
try:
parsed = uuid.UUID(uuid_string)
print(f'解析成功: {parsed}')
print(f'版本: {parsed.version}')
print(f'十六进制: {parsed.hex}')
print(f'整数: {parsed.int}')
except ValueError as e:
print(f'解析失败: {e}')
"
UUID 版本对比
| 版本 | 特点 | 使用场景 |
|---|---|---|
| v4 | 完全随机 | 通用、推荐、最常用 |
| v1 | 基于时间+MAC地址 | 需要排序/追踪 |
| v3 | 基于 MD5 哈希 | 从名称生成确定性 ID |
| v5 | 基于 SHA1 哈希 | 从名称生成确定性 ID |
推荐使用 v4,除非有特殊需求。
参数说明
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
count | int | 1 | 生成数量 |
format | str | "standard" | 格式:"standard"(带连字符)或 "compact"(32位) |
prefix | str | "" | 可选前缀 |
version | int | 4 | UUID 版本:1, 3, 4, 5 |
常见使用场景代码
生成数据库主键
python -c "import uuid; print(f\"INSERT INTO users (id, name) VALUES ('{uuid.uuid4()}', '张三');\")"
生成 API 追踪 ID
python -c "
import uuid
import datetime
request_id = str(uuid.uuid4())[:8]
timestamp = datetime.datetime.now().isoformat()
print(f'[{timestamp}] Request-{request_id}: 开始处理')
"
生成唯一文件名
python -c "
import uuid
import os
original_name = 'document.pdf'
ext = os.path.splitext(original_name)[1]
unique_name = f'{uuid.uuid4().hex}{ext}'
print(f'原文件名: {original_name}')
print(f'唯一文件名: {unique_name}')
"
生成测试数据
python -c "
import uuid
import json
users = []
for i in range(3):
users.append({
'id': str(uuid.uuid4()),
'name': f'User{i+1}',
'email': f'user{i+1}@example.com'
})
print(json.dumps(users, indent=2))
"
注意事项
- UUID 碰撞概率:v4 的 122 位随机数,碰撞概率极低,可放心使用
- 不要自己实现:总是使用标准库
uuid,不要手写随机算法 - 性能:Python 的
uuid.uuid4()每秒可生成数百万个,足够快 - 存储:数据库中通常存为 CHAR(36) 或 BINARY(16)
常见问题
| 问题 | 解决 |
|---|---|
| 需要纯数字 ID | UUID 不是纯数字,用雪花算法或自增 ID |
| 需要有序 ID | 用 UUID v1 或 ULID |
| 需要短 ID | 用 Base58 编码的 UUID 前 8 位 |
| 需要确定性 ID | 用 UUID v3/v5,基于名称生成 |
相关资源
- UUID 标准:RFC 4122
- Python uuid 文档:https://docs.python.org/3/library/uuid.html
Created: 2026-03-14 by 肖总