当前位置:首页 > 编程教程 > Python技术文章 > python管理系统id号不能重复实例

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

  • 发布时间:
  • 作者:码农之家
  • 点击:124

这篇文章主要知识点是关于python、学生管理系统、id、不能重复、python中的id()函数及读取list的方法介绍(代码示例) 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Python编程:从入门到实践
  • 类型:Python3.5编程大小:9.85M格式:PDF作者:埃里克·马瑟斯
立即下载

python管理系统id号不能重复实例

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中的id()函数及读取list的方法介绍(代码示例)

本篇文章给大家带来的内容是关于python中的id()函数及读取list的方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

id(object)

Return the “identity” of an object. This is an integer (or long integer) which is guaranteed to be unique and constant for this object during its lifetime. Two objects with non-overlapping lifetimes may have the same id() value.
CPython implementation detail: This is the address of the object in memory.

说起这个函数就需要先了解pyhton的变量存储机制了:
变量:是动态变量,不用提前声明类型。

当我们写:a = 'ABC'时,Python解释器干了两件事情:

  1. 在内存中创建了一个'ABC'的字符串;

  2. 在内存中创建了一个名为a的变量,并把它指向'ABC'。

id(a)读取的是a的内存地址

程序范例

def addElement(_list):
    print(6,id(_list))
    _list.append(0)
    print(7,id(_list))
    return _list

if __name__=="__main__":
    list1=[1,2,3]
    print(1,id(list1))
    list2 = addElement(list1)
    print(2,list1)
    print(3,id(list1))
    print(4,list2)
    print(5,id(list2))

执行结果:

(1, 48757192L)
(6, 48757192L)
(7, 48757192L)
(2, [1, 2, 3, 0])
(3, 48757192L)
(4, [1, 2, 3, 0])
(5, 48757192L)

两个要点:

  1. return语句返回后list1就已经变为其返回值而不是原来的值

  2. 自从定义后list1这个变量的本质就是一个内存盒子,传到函数里面的一直是这个变量本身,所以地址没变,最后返回的还是他,只是后面加了一个新值,而用a=b这种赋值方法后ab的内存地址是一致的。因此从头到尾list1,list2,_list内存地址都没变过

以上就是python中的id()函数及读取list的方法介绍(代码示例)的详细内容,更多请关注码农之家其它相关文章!

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

相关电子书
学习笔记
网友NO.506073

Mysql删除重复数据保留最小的id 的解决方法

在网上查找删除重复数据保留id最小的数据,方法如下: DELETEFROM peopleWHERE peopleName IN ( SELECT peopleName FROM people GROUP BY peopleName HAVING count(peopleName) 1 )AND peopleId NOT IN ( SELECT min(peopleId) FROM people GROUP BY peopleName HAVING count(peopleName) 1) 自己使用的时候显示报错: delete from tb where id in (SELECT max(id) from tb GROUP BY user HAVING count(user)1) [Err] 1093 - You can't specify target table ‘XXX' for update in FROM clause 暂时不知道是什么原因导致的。 然后想办法分布操作,首先筛选出有重复user的数据,然后用max()选出其中较大的那一行: SELECT max(id) from tb GROUP BY user HAVING count(user)1 然后再根据得到的max(id)逐条删除多余的数据 delete from tb where id=xx 是个笨方法,暂时先解决问题吧。 总结 以上所述是小编给大家介绍的Mysql删除重复数据保留最小的id 的解决方法,希望对大家有所帮助,如果大家有任何……

网友NO.203567

MySQL查询重复数据(删除重复数据保留id最小的一条为唯一数据)

开发背景: 最近在做一个批量数据导入到MySQL数据库的功能,从批量导入就可以知道,这样的数据在插入数据库之前是不会进行重复判断的,因此只有在全部数据导入进去以后在执行一条语句进行删除,保证数据唯一性。 下面话不多说了,来一起看看详细的介绍吧 实战: 表结构如下图所示: 表明:brand 操作: 使用SQL语句查询重复的数据有哪些: SELECT * from brand WHERE brandName IN(select brandName from brand GROUP BY brandName HAVING COUNT(brandName)1 #条件是数量大于1的重复数据) 使用SQL删除多余的重复数据,并保留Id最小的一条唯一数据: 注意点: 错误SQL:DELETE FROM brand WHERE brandName IN (select brandName from brand GROUP BY brandName HAVING COUNT(brandName)1) AND Id NOT IN (select MIN(Id) from brand GROUP BY brandName HAVING COUNT(brandName)1) 提示: You can't specify target table 'brand' for update in FROM clause 不能为……

<
1
>

Copyright 2018-2020 www.xz577.com 码农之家

版权投诉 / 书籍推广 / 赞助:520161757@qq.com