python 生成随机数、生成 uuid

数据库的数据一般需要为每个数据准备能唯一表示这条数据的主键,uuid 是最好的选择了,32 位的随机数自动生成。
1. 两者结合

  1. 使用 uuid.uuid1 产生一个随机数

  2. 在使用 random.sample() 产生一个随机字符串

  3. 将两者进行拼接

import uuid
import random


def random_str(num=6):
    uln = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
    rs = random.sample(uln, num)  # 生成一个 指定位数的随机字符串
    a = uuid.uuid1()  # 根据 时间戳生成 uuid , 保证全球唯一
    b = ''.join(rs + str(a).split("-"))  # 生成将随机字符串 与 uuid拼接
    return b  # 返回随机字符串


b = random_str()
print(b)
print(len(b))

执行结果:

OqU4zi8a0f5612c43011eb9fa75c879c7e2420
38

2.uuid1

import uuid
# 生成 uuid
#    从主机ID、序列号和当前时间生成UUID
#    保证全球唯一
uuid_value = uuid.uuid1()
uuid_str = uuid_value.hex  # 将值转换成 字符串, 并且不添加 -
uuid_int = uuid_value.int  # 返回生成的 int 值

print("uuid_value: ", uuid_value)
print("  uuid_str: ", uuid_str)
print("  uuid_int: ", uuid_int)

执行结果:

uuid_value:  8a0f5613-c430-11eb-b4ff-5c879c7e2420
uuid_str:  8a0f5613c43011ebb4ff5c879c7e2420
uuid_int:  183513093724474589682414652064131851296

3.random.sample

import string
import random
seeds = string.digits
random_str = random.sample(seeds, k=10)
print("".join(random_str))

执行结果:

5197803264
  • 说明一下:string.digits是一个定义好的数字字符串,就是从"0123456789"。
  • choice和choices随机取得数字是可重复的,而sample方法的随机数是不会重复的。这个是他们之间的区别之一。
    4.uuid4
print(uuid.uuid4().int)
print(uuid.uuid4().hex)
print(str(uuid.uuid4().int)[-22:])
print(int(str(uuid.uuid4().int)[-22:]))

输出:
327768030725014732502607372483601148943
c3277eba340a4ce7b78cc52df95b4ccc
5072888061090033776213
6822066085216242463796
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容