i have a problem statement where i need to find the unique number in python and save it in database to PostgreSQL .Every time it should generate unique number (i.e should not be repeated)
Also i need to append one prefix as well to the unique number :
The solution I Tried till now :
import time
def generate_unique_reference_number(order_type_id=28):
order_type_prefix = '{:<02}'.format(order_type_id) # 2 digit
current_time = str(int(time.time() * 1000000)) # 16 digit
return int(order_type_prefix + current_time)
numbers = []
numbers_set = set()
for i in range(10000):
num = generate_unique_reference_number(28)
numbers.append(num)
numbers_set.add(num)
print(len(numbers))
print(len(numbers_set))
print(len(numbers) - len(numbers_set))
Its still giving me duplicate values .
Max limit for bigint in postgres server is :
-9223372036854775808 to 9223372036854775807
i can use nano seconds(i.e 19 digits limit same as postgres) ,but i need to append prefix of 2 digits as well .
def generate_unique_reference_number(order_type_id=28):
current_time = str(int(time.time_ns())) # 19 digit
return int(current_time)
even nano seconds approach return duplicates but lesser count .