zoukankan      html  css  js  c++  java
  • python生成并处理uuid的方法

    UUID(Universally Unique Identifier)是通用唯一识别码,在许多领域用作标识,比如我们常用的数据库也可以用它来作为主键,原理上它是可以对任何东西进行唯一的编码的。作为新手一看到类似varchar(40)这样的主键就觉得有点蒙圈了,字符串型也不能自增啊,这里就应该应用UUID了。数据库一般都有自己的办法生成UUID,但虽然可以用,但这玩意考虑到可读性和有点坑的长度还是尽量不要用这玩意做主键···咳,有点跑题···
            下面就简单说明一下python是如何生成UUID的:
            python有一个模块叫做uuid,导入它就可以使用它的四个方法了。注意这四个方法依次是uuid1(),uuid3(),uuid4(),uuid5(),
    然而并没有uuid2()。

    # -*- coding:utf-8 -*-
    import uuid
     
    print uuid.uuid1()
    #bf1dfacf-67d8-11e8-9a23-408d5c985711
    print uuid.uuid3(uuid.NAMESPACE_DNS, 'yuanlin')
    #ddb366f5-d4bc-3a20-ac68-e13c0560058f
    print uuid.uuid4()
    #144d622b-e83a-40ea-8ca1-66af8a86261c
    print uuid.uuid5(uuid.NAMESPACE_DNS, 'yuanlin')
    #4a47c18d-037a-5df6-9e12-20b643c334d3

            乍一看全都是36个字符,那么他们到底有什么不同呢,下面一一分析。

            uuid1():这个是根据当前的时间戳和MAC地址生成的,最后的12个字符408d5c985711对应的就是MAC地址,因为是MAC地址,那么唯一性应该不用说了。但是生成后暴露了MAC地址这就很不好了。

            uuid3():里面的namespace和具体的字符串都是我们指定的,然后呢···应该是通过MD5生成的,这个我们也很少用到,莫名其妙的感觉。

            uuid4():这是基于随机数的uuid,既然是随机就有可能真的遇到相同的,但这就像中奖似的,几率超小,因为是随机而且使用还方便,所以使用这个的还是比较多的。

            uuid5():这个看起来和uuid3()貌似并没有什么不同,写法一样,也是由用户来指定namespace和字符串,不过这里用的散列并不是MD5,而是SHA1.

            下面再来说一下简单的处理,UUID中间的'-'是个比较奇怪的字符,那么应该去掉它,这其实超简单:

    uid = str(uuid.uuid4())
    suid = ''.join(uid.split('-'))
  • 相关阅读:
    arcEngine classic code(2)
    VisualGraph文档
    基于.net2 的CAD 绘图控件virtualGraph(2)
    沈阳三维GIS软件开发人员
    arcEngine + .net 2 AccessViolationException
    数据库事务并发带来的问题
    理解 WPF Dispatcher
    扇入与扇出
    IComparable 与 IComparer
    同步、异步、多线程
  • 原文地址:https://www.cnblogs.com/jiangxiaobo/p/12481852.html
Copyright © 2011-2022 走看看