标签分类
技术文章
当前位置:主页 > 计算机编程 > python > python管理系统id号不能重复实例

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

  • 发布时间:
  • 作者:码农之家原创
  • 点击:104

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

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

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

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的方法介绍(代码示例)的详细内容,更多请关注码农之家其它相关文章!

以上就是本次给大家分享的全部知识点内容总结,大家还可以在下方相关文章里找到儿童python编程入门书籍推、 vue项目中使用md5加密以及、 解决axios.interceptors.respon、 等python文章进一步学习,感谢大家的阅读和支持。

上一篇:linux开机自启动python程序代码方法

下一篇:浅析python爬取100与爬10的区别

展开 +

收起 -

学习笔记
网友NO.607266

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.529428

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 不能为FROM子句中的更新指定目标表“brand” 原因是:不能将直接查处来的数据当做删除数据的条件,我们应该先把查出来的数据新建一个临时表,然后再把临时表作为条件进行删除功能 正确SQL写法: DELETE FROM brand WHERE brandName IN (SELECT brandName FROM (SELECT brandName FROM brand GROUP BY brandName HAVING COUNT(brandName)1) e) AND Id NOT IN (SELECT Id FROM (SELECT MIN(Id) AS Id FROM brand GROUP BY brandName HAVING COUNT(brandName)1) ……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明