[Fixed]-How to create a 8 digit Unique ID in Python?


Well you could use uuid.hex

import uuid
uuid.uuid4().hex[:8]  # Might reduce uniqueness because of slicing

Or Django also has helper function get_random_string which accepts two parameters length (default=12) and allowed_chars:

from django.utils.crypto import get_random_string


Use os.urandom for the data, and base64 encode it;

In [1]: import os

In [2]: import base64

In [3]: base64.b64encode(os.urandom(6)).decode('ascii')
Out[3]: '6Amtry80'


TLDR: use hashids to convert one-to-one between sequential integers and random-looking strings

If you are creating a web app and need to map string ids like 'x4ua9fam' to some entry in a database, you want a robust one-to-one method of converting back and forth between an integer and the string id.

Instead of generating a random id each time and checking if it has been taken, you can assign the next available sequential integer (0, 1, 2, ...) to each new item and encode it into a unique string using hashids. When the user requests the string, you can decode it back into the integer and get your data.


Leave a comment