python学生管理系统id号不能重复典型问题

  • 更新时间:2019-07-05 15:26:01
  • 编辑:赖博瀚

python 生成随机不重复的用户id

数据库里面有时候需要不重复的id 来表示用户id,就像QQ号码一样。

如果简单用uuid来生成的话,生成64位,太长。

生成6到8位gid

def generate_gid():
    gids = []
    for number in range(100000, 10000000):
        gids.append(number)
    for gid in gids:
        index0 = random.randint(0, len(gids) - 1)
        index1 = len(gids) - 1
        tmp = gids[index0]
        gids[index0] = gids[index1]
        gids[index1] = tmp
    return gids.pop()

用户问题:想用 Python 写一个 ID 生成器如何解决并发获取产生重复 ID 的问题?

想用 Flask 写一个服务,为各个应用提供自动生成的 ID。

需要获取 ID 的应用---->登录获取 Token---->通过 Token 附带一些参数(比如:ID 类型,ID 生成规则)获取 ID

现在问题主要有:
有一个删除服务,在应用 APP 中删除业务时需要删除生成器对应的 ID,使得 ID 可以重复利用,因此每次生成 ID 时需要查询是否有重复 ID,使得效率很低,而且并发高时,容易生成重复 ID。

python生成唯一Id的几种方法

# coding:utf-8
import random
def createRandomString(len):
    print ('wet'.center(10,'*'))
    raw = ""
    range1 = range(58, 65) # between 0~9 and A~Z
    range2 = range(91, 97) # between A~Z and a~z

    i = 0
    while i < len:
        seed = random.randint(48, 122)
        if ((seed in range1) or (seed in range2)):
            continue;
        raw += chr(seed);
        i += 1
    # print(raw)
    return raw

print createRandomString(20)

 

print ("test".center(20,"-"))
#! coding:utf-8
import uuid
print u"uuid1  生成基于计算机主机ID和当前时间的UUID"
print uuid.uuid1() # UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')

print u"\nuuid3  基于命名空间和一个字符的MD5加密的UUID"
print uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org') #UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e')

print u"\nuuid4  随机生成一个UUID"
print uuid.uuid4()
#'16fd2706-8baf-433b-82eb-8c7fada847da'

print u"\nuuid5  基于命名空间和一个字符的SHA-1加密的UUID"
uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org') #UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d')

print u"\n根据十六进制字符生成UUID"
x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}')
print u"转换成十六进制的UUID表现字符"
print str(x)       # '00010203-0405-0607-0809-0a0b0c0d0e0f'''

 

相关教程

  • python时间日期函数与利用pandas进行时间序列处理详解

    python标准库包含于日期(date)和时间(time)数据的数据类型,datetime、time以及calendar模块会被经常用到,而pandas则可以对时间进行序列化排序

    发布时间:2019-08-26

  • python基于SMTP协议发送邮件

    这篇文章主要为大家详细介绍了python基于SMTP协议发送邮件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    发布时间:2019-06-03

  • Python渗透测试编程技术:方法与实践

    Python渗透测试编程技术:方法与实践

    《Python渗透测试编程技术:方法与实践》由资深的网络安全教师撰写,内容围绕如何使用目前备受瞩目的Python语言进行网络安全编程展开。《Python渗透测试编程技术:方法与实践》从Python的基础讲起,系统讲述了网络安全的作用、方法论,Python在网络安全管理上的应用,以及Python在实现这些应用时相关的网络原理和技术。

    大小:167.2 MBPython编程电子书

  • Python地理空间分析指南

    Python地理空间分析指南

    Python作为一种高级程序设计语言,凭借其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言之一。 本书以地理空间分析为背景,介绍了Python在地理信息处理方面的应用技巧。全书共

    大小:12.4 MBPython电子书

  • Python数据抓取技术与实战

    Python数据抓取技术与实战

    这本书通过数据抓取篇(如何获得数据信息)、数据分析篇(分析挖掘,提取出有价值的信息)、数据可视化篇(以直观清晰的图形表示出关键的数量关系和概念)详细的描述数据抓取、分析、展示的整个流程,而且每一篇自成一体,可以单独学习掌握

    大小:59.3 MBPython爬虫电子书

  • 预测分析建模:Python与R语言实现

    预测分析建模:Python与R语言实现

    本书介绍使用R与Python预测分析建模来解决实际问题,,并提供有效的解决方法。通过展示建模技术和编程工具,我们将抽象的概念转换为具体的例子,推荐阅读

    大小:79.4 MB建模电子书

  • Python文本分析

    Python文本分析

    本书是Intel首席科学家撰写,全面系统阐释Python文本分析的相关基础知识、实用技术及实践,介绍了文本和语言语法、结构和语义的基础概念和高级概念等,欢迎下载

    大小:100.4 MBPython编程电子书

  • 从Excel到Python:数据分析进阶指南

    从Excel到Python:数据分析进阶指南

    Excel是数据分析中最常用的工具,本书通过Python与Excel的功能对比介绍如何使用Python通过函数式编程完成Excel中的数据处理及分析工作。在Python中pandas库用于数据处理,我们从1787页的pandas官网文

    大小:9.69 MBPython数据电子书

用户留言