TransWikia.com

Hacer un registro único en base de datos usando while en Python

Stack Overflow en español Asked by Rosendo Zarate on December 25, 2021

Estoy intentando crear un valor único en la base de datos con un valor random, empezando por el número del año. Es decir, pueden quedar valores como los siguientes:

16EP784
16TTU3I
1699UYT

La idea es generar un código único para cada cliente. La base de datos no lo permitiría, pero eso sería como un mecanismo de seguridad a la programación realizada.

Se crea un nuevo registro y se crea con un código random. Luego, si el valor generado ya existe en la base de datos, la segunda instrucción crea otro.

Ejemplo con una lista:

lista = [1,2,3]
if 2 in lista:
    #crea otro valor <---

La pregunta es cómo lo haría para que se asegure una y otra vez de que el valor generado no existe, ni el tercero, ni el cuarto…

No entiendo cómo se podría hacer eso con un while, que según entiendo bastaría para hacerlo.

2 Answers

Lo que deseas se puede resumir en los siguientes pasos:

  1. Generar un 'id' para un nuevo cliente
  2. Si el 'id' generado ya existe, entonces generar otro 'id'
  3. Repetir paso 2 hasta que se genere un 'id' que no exista
  4. Agregar el 'id' a la lista de 'id's

Estoy en lo correcto ?

En python podemos "traducir" las instrucciones como sigue:

def generarNuevoId():
    """
    Funcion que genera un nuevo id de forma aleatoria
    """
    # instrucciones que generan el id

lista = [1,2,3,4,5,6,7]    # lista de 'id's

nuevoid = generarNuevoId()

while nuevoid in lista:
    nuevoid = generarNuevoId()

lista.append(nuevoid)

Answered by Ian Mejias on December 25, 2021

Por medio de un While como lo mencionaste , el if para validar si existe. el 20 sería el total de números generados requeridos

from random import randint

lista =[]
i=0
while i<20:
    val = randint(0,100)
    if val not in lista:
        print("No Existe")
        lista.append(val)
    i+=1

print(lista)

Demo

Aunque para lo que desea le convendría tener una función y que retorne el valor generado

from random import randint
def returnIdUnique(lista):

    while True:
        val = randint(0,100)
        if val not in lista:
            lista.append(val)
            return val

lista= [1,4,2]
print(returnIdUnique(lista))

Demo

Answered by Dev. Joel on December 25, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP