0

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 .

5
  • 1
    Under what conditions do you expect int(time.time() * 1000000) to be unique? Commented Apr 3, 2020 at 13:22
  • 1
    Does this answer your question? Generating non-repeating random numbers in Python Commented Apr 3, 2020 at 13:23
  • If you need unique numbers, then why don't you use a database sequence? Commented Apr 3, 2020 at 13:33
  • A user can create order from UI .for that unique guid is required which needs to persisted in db along with primary key .since we have queue between UI and service ,hence UI wont get the unique primary key back from the service to updated . Commented Apr 3, 2020 at 13:39
  • @Joe thanks for the link . Commented Apr 3, 2020 at 13:44

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.