While saving PDF its unique number is one greater than number saved in database (HPX/GP/2024/001)

def save_to_database():
try:

    unique_number = generate_unique_number()
    if unique_number:
        sql = "INSERT INTO gate_pass (reference_number, employee_name, employee_code, date, created_by, laptop_tag, charger_tag, mouse_tag, laptop_serial_no, charger_serial_no, mouse_serial_no) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
        val = (
        unique_number,
        name.get(),
        Emp.get(),
        datetime.strptime(Date.get(), "%m/%d/%y").strftime("%m-%d-%Y"),
        Cre_By.get(),
        Lap.get(),
        Chr_Tag.get(),
        Mou.get(),
        Rem.get(),
        Chr.get(),
        Mou_Tag.get()
    )
    mycursor.execute(sql, val)
    mydb.commit()
    messagebox.showinfo("Success", "Data saved successfully to MySQL database")
    return unique_number  # Return the generated unique number

except Exception as e:
    messagebox.showerror("Error", f"An error occurred while saving data to MySQL database: {e}")

return None

def generate_unique_number():
try:
year = datetime.now().year
# Fetch the latest reference number from the database
mycursor.execute(“SELECT reference_number FROM gate_pass ORDER BY reference_number DESC LIMIT 1”)
result = mycursor.fetchone()

    if result:
        last_number = result[0].split('/')[-1]
        next_number = int(last_number) + 1
    else:
        next_number = 1
    
    unique_number = f"HPX/GP/{year}/{next_number:03d}"
    return unique_number
    
except Exception as e:
    messagebox.showerror("Error", f"An error occurred while generating unique number: {e}")
    return None

There are FAR better ways to generate unique numbers in a database. I’m not sure how many of them are available in MySQL, but you definitely want to let the database generate you an ID if you can. At very very best, your code is vulnerable to a race condition where, if two try to create documents at once, the second one will fail; at worst, you can have data integrity problems. Let the database govern the IDs for you.

can you please suggest me