SQLAlchemy:随机唯一整数?

ste*_*ten 4 python random sqlalchemy unique identifier

我可以这样做来将列类型设置为唯一字符串:

    uuid = Column(String,  default=lambda: str(uuid.uuid4()), unique=True)
Run Code Online (Sandbox Code Playgroud)

但我想生成random-unique-integer,而不是 random-unique-string 。

知道怎么做吗?


uuid.uuid4().int

谢谢。如果我可以重新指定 :) 有没有办法将它放入 DB Integer 类型。

小智 6

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)
Run Code Online (Sandbox Code Playgroud)

  • 为什么将列设置为字符串而不是整数? (2认同)