Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQLAlchemy : random Unique integer?

I can do this to set column type to be unique string :

    uuid = Column(String,  default=lambda: str(uuid.uuid4()), unique=True)

but I want to generate random-unique-integer, not random-unique-string.

any idea how to do that ?


uuid.uuid4().int

thanks. If I can respecify :) is there a way to fit it into DB Integer type.

like image 441
sten Avatar asked Mar 12 '23 12:03

sten


1 Answers

from random import randint 

def random_integer():
    min_ = 100
    max_ = 1000000000
    rand = randint(min_, max_)

    # possibility of same random number is very low.
    # but if you want to make sure, here you can check id exists in database.
    from sqlalchemy.orm import sessionmaker
    db_session_maker = sessionmaker(bind=your_db_engine)
    db_session = db_session_maker()
    while db_session.query(Table).filter(uuid == rand).limit(1).first() is not None:
        rand = randint(min_, max_)

    return rand

class Table(Base):
    uuid = Column(String,  default=random_integer, unique=True)
like image 168
talhasch Avatar answered Mar 20 '23 20:03

talhasch