logo

Kuinka luoda UUID Pythonissa

Tässä opetusohjelmassa keskustelemme UUID-tunnuksen luomisesta Pythonissa uuid-moduulin avulla. Ennen kuin sukeltaa tähän aiheeseen, ymmärrämme UUID:n peruskäsitteen.

Johdanto

UUID on nimen lyhenne yleisesti yksilölliset tunnisteet tunnetaan myös nimellä GUID, eli maailmanlaajuisesti yksilöllinen tunniste. Se on 128 bitin pituinen tunnusnumero, joka määrittää yksilöllisesti asiakirjat, käyttäjät, resurssit tai tiedot. UUID-tunnuksista on useita versioita; keskustelemme niistä kaikista tulevassa osiossa.

  • UUID:tä käytetään yksilöllisten tunnisteiden määrittämiseen tilassa ja ajassa. Tila ja aika tarkoittavat, että kun UUID on luotu standardin mukaisesti, tunnisteet eivät voi kopioida olemassa olevia resursseja.
  • UUID on sopivin vaihtoehto, kun vaaditaan ainutlaatuisuutta.
  • Sillä on keskeinen rooli salaus- ja hajautussovelluksessa.

Milloin käyttää UUID:tä

UUID-moduulia voidaan käyttää seuraavissa tilanteissa.

Verkkosovelluksessa -

  • UUID auttaa meitä hallitsemaan tilaa luomalla yksilöllinen istuntotunnus.
  • Yleensä käytämme automaattisen lisäyksen arvoja käyttäjätunnusten luomiseen. Se on melko suoraviivainen lähestymistapa ja helppo arvata. UUID-tunnuksia on kuitenkin vaikea arvata, koska niitä ei luoda peräkkäin.

Tietokantajärjestelmässä

historia javassa
  • Se tarjoaa merkittävän edun tietokannassa, koska UUID on ympäristöriippumaton. Se tarkoittaa, että voimme luoda UUID:n mille tahansa koneelle millä tahansa sovelluksella.
  • Useimmat sovellukset ovat riippuvaisia ​​tietokantapalvelimesta luodakseen yksilöllisen tai ensisijaisen avaimen. UUID on hyvä vaihtoehto luoda ainutlaatuinen tietokantaavain, joka auttaa meitä muuttamaan avainten luontitapaa tietokannassa.
  • UUID on todellinen arvo, ei pseudoarvo, kuten luku SQL-taulukossa.

Python uuid -moduuli

Python uuid -moduuli on toteutettu RFC 4122:n mukaisesti, joka on Internet-yhteiskunnan standardi ja tekijänoikeus ©. Python UUID -moduulin avulla voimme luoda erityyppisiä UUID-tunnuksia, kuten 1-, 3-, 4- ja 5-versioiden UUID-tunnuksia. Python-moduuli tukee seuraavia UUID-versioita.

    UUID1 -Se luo yksilöllisen numeron käyttämällä MAC-osoitetta ja nykyistä aikakomponenttia.UUID4 -Se käyttää näennäissatunnaislukugeneraattoreita UUID-tunnusten luomiseen, ja tällaisia ​​UUID-tyyppejä on hyvä käyttää turvallisuussyistä.UUID3 ja UUID5 -Se käyttää kryptografista tiivistystä ja sovelluksen toimittamia tekstijonoja UUID:n luomiseen.

Luo UUID Python UUID -moduulin avulla

Luodaan eri versioiden UUID:t Python uuid -moduulilla.

Käyttämällä uuid1() - Uuid:n luomiseksi meidän on tuotava uuid-moduuli ja kutsuttava sitten uuid1()-metodi. Ymmärretään seuraava esimerkki.

Esimerkki - 1

 import uuid # Printing random id using uuid1() print ('The random generated uuid is : ', uuid.uuid1()) 

Lähtö:

 The random id using uuid1() is : ab2d0fc0-7224-11ec-8ef2-b658b885fb3 

UUID:n rakenne

Kuten näemme, yllä olevassa UUID:ssä on viisi komponenttia ja jokainen komponentti on samanpituinen. UUID:n rakenne on muodossa '8-4-4-4-12'.

Task Manager Linuxille

UUID-merkkijonoesitys on annettu alla -

 UUID = time_low '-' time_mid '-'time_high_and_version ' 'clock_seq_and_reserved_And_clock_seq_low'-' Node. 

Eritelkäämme yllä olevat UUID-kentät

    time_low -Se on tunnuksen ensimmäiset 32 ​​bittiä.time_mid -Se on seuraavat 16 bittiä id.aika_korkea_ja_versio -Se on seuraavat 16 bittiä ID:tä.clock_seq_hi_variant:Se on seuraavat 8 bittiä ID:tä.clock_seq_low:Se on seuraavat 8 bittiä ID:tä.solmu:Se on id:n viimeiset 48 bittiä.aika :Se on id:n aikakomponenttikenttä.clock_seq:Se on 14-bittinen järjestysnumero.

Ymmärretään toinen esimerkki UUID-tunnuksen luomisesta eri muodoissa, kuten tavut, int ja heksadesimaalit.

Esimerkki - 2:

 import uuid id = uuid.uuid1() # Representations of uuid1() print ('The byte Representations of uuid1() are : ') print (repr(id.bytes)) print ('Integer Value Representation: ',end='') print(id.int) print ('hex Value Representation : ',end='') print (id.hex) print('
') # The components of uuid1() print ('The components of uuid1() are : ') print ('Version : ',end='') print (id.version) print ('Variant : ',end='') print (id.variant) print('
') # Fields of uuid1() print ('The Fields of uuid1() are : ') print ('Fields : ',end='') print (id.fields) print('UUID.fields :', id.fields) print('Prining each field seperately') print('UUID.time_low : ', id.time_low) print('UUID.time_mid : ', id.time_mid) print('UUID.time_hi_version : ', id.time_hi_version) print('UUID.clock_seq_hi_variant: ', id.clock_seq_hi_variant) print('UUID.clock_seq_low : ', id.clock_seq_low) print('UUID.node : ', id.node) print('UUID.time : ', id.time) print('UUID.clock_seq : ', id.clock_seq) print('UUID.SafeUUID : ', id.is_safe) print('
') # The time Component of uuid1() print ('The time Component of uuid1() is : ') print ('Time component : ',end='') print (id.node) 

Lähtö:

 The byte Representations of uuid1() are : b'xb9xeaxb88sx0ex11xecxbfvx86xa0;xe4`x12' int Representation : 247125913120858544596828814248071421970 hex Representation : b9eab838730e11ecbf7686a03be46012 The Components of uuid1() are : Version : 1 Variant : specified in RFC 4122 The Fields of uuid1() are : Fields : (3119167544, 29454, 4588, 191, 118, 148022757711890) The time Component of uuid1() is : Time component : 148022757711890 UUID.time_mid : 29460 UUID.time_hi_version : 4588 UUID.clock_seq_hi_variant: 186 UUID.clock_seq_low : 100 UUID.node : 90979746151630 UUID.time : 138612218401246920 UUID.clock_seq : 14948 UUID.SafeUUID : SafeUUID.unsafe 

UUID1:n haitat

UUID1 liittyy tietokoneen MAC-osoitteeseen ja voi siten olla uhka yksityisyydelle. Se tarjoaa kuitenkin täydellisen ainutlaatuisuuden.

Tapa 2: uuid4()

Tämä menetelmä luo satunnaiset luvut takaaen yksityisyyden. Ymmärretään seuraava esimerkki.

Esimerkki -

 import uuid id = uuid.uuid4() # Id generated using uuid4() print ('The id generated using uuid4() : ',end='') print (id) 

Lähtö:

 The id generated using uuid4() : 53967be6-71e9-4ee9-9912-60d02d2d9b0a 

uuid1() vs uuid4

The uuid1() takaa, ettei törmäyksiä synny. Voimme luoda UUID-tunnusten kaksoiskappaleita luomalla yli 16384 uuid1 alle 100 ns:ssa. Se ei takaa yksityisyyden suojaa. The uuid1() ei suositella, jos et halua nähdä koneesi MAC-osoitteita.

Uuid4()-menetelmä luo satunnaisen UUID:n käyttämällä kryptografisesti luotuja suojattuja numerogeneraattoreita. Se luo turvallisempia UUID-tunnuksia. Suositellaan, kun UUID:t vaativat luomista erillisillä koneilla.

UUID 3 ja UUID 5 luodaksesi nimipohjaisen UUID:n

Nimipohjainen UUID tarkoittaa, että voimme luoda UUID-tunnuksia käyttämällä versiota 3 tai 5 UUID.

Voimme käyttää nimiä ja nimiavaruuksia luodaksemme sarjan ainutlaatuisia UUID-tunnuksia. Versiot 3 ja 5 tiivistävät nimitilan tunnisteen nimen kanssa.

The uuid3() menetelmä luo UUID:n, joka perustuu nimitilan tunnisteen ja merkkijonon MD5-hajautusarvoon. Toisaalta uuid5()-menetelmä luo UUID:n nimiavaruuden tunnisteen SHA-1-hajautustekniikan perusteella.

Alla ovat uuid3()- tai uuid5()-komentojen määrittelemät nimiavaruuksien tunnisteet.

matriisi, joka lisää elementtejä java
    NAMESPACE_DNS -Se edustaa perinteistä verkkotunnusta. Esimerkiksi https://javatpoint.com.NAMESPACE_URL -Se edustaa URL-osoitetta.NAMESPACE_OID -Tämä nimiavaruus on määritetty merkkijonona ISO OID.NAMESPACE_X500 -Kun tämä nimiavaruus on määritetty, nimimerkkijono on X.500 DN DER:ssä tai tekstitulostusmuoto.

Ymmärretään seuraava esimerkki UUID3:n ja UUID5:n luomiseksi käyttämällä erilaisia ​​isäntänimiä ja nimiavaruuksia.

Esimerkki -

 import uuid host_names = ['javatpoint.com', 'tutorialandexample.com'] for host in host_names: print('Generate uuid 3 version using name as',host,' and namespace as uuid.NAMESPACE_DNS') print(uuid.uuid3(uuid.NAMESPACE_DNS, host)) print('Generate uuid 5 version using name as', host, ' and namespace as uuid.NAMESPACE_DNS'), print(uuid.uuid5(uuid.NAMESPACE_DNS, host)) print() 

Lähtö:

 Generate uuid 3 version using name as javatpoint.com and namespace as uuid.NAMESPACE_DNS 98bbe92a-b38f-3289-a4b4-80ec1cfdf8cb Generate uuid 5 version using name as javatpoint.com and namespace as uuid.NAMESPACE_DNS 0fc2d4dd-7194-5200-8050-f0ca1dd04b3d Generate uuid 3 version using name as tutorialandexample.com and namespace as uuid.NAMESPACE_DNS 6f6fe445-1c4c-3874-854e-c79f617effe5 Generate uuid 5 version using name as tutorialandexample.com and namespace as uuid.NAMESPACE_DNS 781c3cc9-4965-5fdc-9c40-89bb0ea8ec0d 

Esimerkki - 2: Luo UUID 3 ja UUID 5 käyttämällä eri nimiavaruutta

 import uuid name_spaces = [uuid.NAMESPACE_DNS, uuid.NAMESPACE_URL, uuid.NAMESPACE_OID, uuid.NAMESPACE_X500] host_name = 'pynative.com' print('Generate uuid using namespace') for namespace in name_spaces: print('uuid 3 is', uuid.uuid3(namespace, host_name)) print('uuid 5 is', uuid.uuid5(namespace, host_name)) print() 

Lähtö:

 Generate uuid using namespace uuid 3 is 6ddc8513-dc7b-3b37-b21b-a1ca9440fe14 uuid 5 is 8d6a1314-170a-559c-afe7-b68d1d7ee9ac uuid 3 is 5dcfef3e-bcc9-38bc-b989-4a7516a05974 uuid 5 is 3a4a6c31-8d6a-5583-8497-d2ed90b1f13a uuid 3 is 84d9730f-330f-3634-9542-4acfcdcd6c60 uuid 5 is 899f3d4b-6095-5ee6-9805-68e0c51dcb39 uuid 3 is b140fa3b-983a-3efe-85ef-92f07d5e09a0 uuid 5 is 73b723ef-5c5e-5eb4-8fcc-aabb5c4e7803 

uuid3:n ja uuid5:n käyttäytyminen

  • Vaikka sama nimiavaruus ja sama nimi ovat samankaltaisia, UUID:t luodaan eri aikoina.
  • Kaksi eri nimiavaruutta samassa nimiavaruudessa ovat erilaisia, se luo yksilölliset tunnukset.

Esimerkki - 3

 import uuid print('Generate version 3 uuid using name as pynative.com and namespace as uuid.NAMESPACE_DNS') print(uuid.uuid3(uuid.NAMESPACE_DNS, 'javatpoint.com')) print('Generate version 3 uuid using name as pynative.com and namespace as uuid.NAMESPACE_DNS') print(uuid.uuid3(uuid.NAMESPACE_DNS, 'javatpoint.com')) 

Lähtö:

 Generate version 3 uuid using name as pynative.com and namespace as uuid.NAMESPACE_DNS 98bbe92a-b38f-3289-a4b4-80ec1cfdf8cb Generate version 3 uuid using name as pynative.com and namespace as uuid.NAMESPACE_DNS 98bbe92a-b38f-3289-a4b4-80ec1cfdf8cb 

Kuinka muuntaa merkkijono UUID:ksi ja UUID merkkijonoksi Pythonissa?

The uuid.uuid1() Metodi palauttaa UUID-luokan esiintymän. Voimme saada UUID-merkkijonoesityksen käyttämällä str() menetelmä. Vastaavaa merkkijonomuotoa voidaan käyttää vertailuun tai manipulointiin. Ymmärretään seuraava esimerkki.

miten komentosarja suoritetaan

Esimerkki -

 import uuid UUID1_VAL = uuid.uuid1() print('The version 1 UUID is ', UUID1_VAL) # convert a UUID to a string of hex digits in standard form print('The version 1 UUID in String format', str(UUID1_VAL)) # Use replace() method to remove dashes from string uuidString = str(UUID1).replace('-', '') print('Version 1 UUID in String removing dashes', uuidString) 

Lähtö:

 The version 1 UUID is cdca7930-7488-11ec-a0c4-4984d2946471 UUID of version 1 in String format cdca7930-7488-11ec-a0c4-4984d2946471 Version 1 UUID in String format cdca7930-7488-11ec-a0c4-4984d2946471 Version 1 UUID in String removing dashes cdca7930748811eca0c44984d2946471 

Nyt luomme UUID:n merkkijonosta.

Joskus saamme UUID:n merkkijonomuodossa. Ja sovelluksemme on muunnettava se UUID-luokan ilmentymään joidenkin sovellusten osalta. Ymmärretään seuraava esimerkki merkkijonomuotoillun UUID:n muuntamiseksi.

Esimerkki -

 import uuid import uuid UUIDStrings = ['{c7c9de0a-d676-11e8-8d62-ccaf789d94a0}', '018c168c-d509-11e8-b096-ccaf789d94a0', 'urn:uuid:e5e9394c-daed-498e-b9f3-69228b44fbfa'] for string in UUIDStrings: # make a UUID from a string of hex digits (braces and hyphens ignored) myUUID = uuid.UUID(string) print('My UUID is', myUUID) print('My UUID time component is', myUUID.time) print() 

Lähtö:

löydä iPhoneni Androidista
 UUID is c7c9de0a-d676-11e8-8d62-ccaf789d94a0 Time component is 137595594281180682 UUID is 018c168c-d509-11e8-b096-ccaf789d94a0 Time component is 137594023292180108 UUID is e5e9394c-daed-498e-b9f3-69228b44fbfa Time component is 688728508333635916 

Esimerkki - 2:

 import uuid def display(message, l): print(message) for v in l: print(v) print() string_uuids = [ 'urn:uuid:f2f84497-b3bf-493a-bba9-7c68e6def80b', '{417a5ebb-01f7-4ed5-aeac-3d56cd5037b0}', '2115773a-5bf1-11dd-ab48-001ec200d9e0', ] display('string UUID', string_uuids) uuids = [ uuid.UUID(s) for s in string_uuids ] display('converted to uuids', uuids) uuids.sort() display('sorted value', uuids) 

Lähtö:

 string UUID urn:uuid:f2f84497-b3bf-493a-bba9-7c68e6def80b {417a5ebb-01f7-4ed5-aeac-3d56cd5037b0} 2115773a-5bf1-11dd-ab48-001ec200d9e0 converted to uuids f2f84497-b3bf-493a-bba9-7c68e6def80b 417a5ebb-01f7-4ed5-aeac-3d56cd5037b0 2115773a-5bf1-11dd-ab48-001ec200d9e0 sorted value 2115773a-5bf1-11dd-ab48-001ec200d9e0 417a5ebb-01f7-4ed5-aeac-3d56cd5037b0 f2f84497-b3bf-493a-bba9-7c68e6def80b 

Luo toistettavia UUID-tunnuksia

Kuten aiemmin mainitsimme, UUID:llä on useita määritteitä. Voimme käyttää samaa UUID-tunnusta käyttämällä mitä tahansa sen attribuutteja. Käyttämällä uuid-moduuli , voimme luoda saman uuid milloin tahansa käyttämällä siemenarvoa. Siemenarvoa voidaan käyttää myös saman UUID:n luomiseen. Ymmärretään molemmat käsitteet.

Seuraavia syötteitä voidaan käyttää UUID-ilmentymän luomiseen.

  • merkkijono
  • tavua
  • Bytes_le
  • Kentät
  • int

UUID voidaan luoda käyttämällä mitä tahansa yllä olevista arvoista. Katsotaanpa seuraava esimerkki, jossa käytämme kaikkia näitä saman UUID:n arvoja.

Esimerkki -

 import uuid print('Generating UUID from int') UUID_x = uuid.UUID(int=236357465324988601727440242910546465952) print('UUID is', UUID_x) print('UUID from URN') UUID_x1 = uuid.UUID('urn:uuid:b1d0cac0-d50d-11e8-b57b-ccaf789d94a0') print('UUID is', UUID_x1) print('UUID from bytes') UUID_x2 = uuid.UUID(bytes=b'xb1xd0xcaxc0xd5
x11xe8xb5{xccxafxx9dx94xa0') print('UUID is', UUID_x2) print('UUID from bytes_len') UUID_x3 = uuid.UUID(bytes_le=b'xc0xcaxd0xb1
xd5xe8x11xb5{xccxafxx9dx94xa0') print('UUID is', UUID_x3) print('UUID from fields') UUID_x4 = uuid.UUID(fields=(2983250624, 54541, 4584, 181, 123, 225054014936224)) print('UUID is', UUID_x4) 

Lähtö:

 Generating UUID from int UUID is b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 UUID from URN UUID is b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 UUID from bytes UUID is b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 UUID from bytes_len UUID is b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 UUID from fields UUID is b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 

Toista UUID siemenillä

Kuten nimestä voi päätellä, Faker-moduuli luo väärennettyjä tietoja meille. Olemme käyttäneet faker-moduulia luomaan saman UUID:n toistuvasti. Ymmärretään seuraava esimerkki.

Esimerkki -

 import uuid from faker import Faker fake_obj = Faker() fake_obj.seed(8754) print(faker_obj.uuid4()) fake_obj.seed(8754) print(fake_obj.uuid4()) 

Lähtö:

 b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 b1d0cac0-d50d-11e8-b57b-ccaf789d94a0 

Johtopäätös

Tässä opetusohjelmassa olemme keskustelleet uuid-moduulista yksityiskohtaisesti ja ymmärtäneet, kuinka voimme luoda erilaisia ​​UUID-tunnuksia. UUID-tunnisteet auttavat meitä määrittelemään sovelluksen/tietokannan yksilöllisyyden ja auttavat myös määrittelemään dokumenttien, isäntien, sovelluksen, asiakkaiden ja muiden tilanteiden tunnisteet.