从自动增量主键生成哈希id?

时间:2016-09-15 20:59:18

标签: python sqlalchemy hashids

在定义模型时,我可以像这样生成uuid:

class Blah(Model):
   id = Column(Integer, primary_key=True)
   uuid = Column(String,  default=lambda: str(uuid.uuid4()), unique=True)

但我想要的是基于主键生成hashid,类似这样(伪代码): (https://github.com/davidaurelio/hashids-python

class Blah(Model):
   id = Column(Integer, primary_key=True)
   uuid = Column(String,  default=lambda: Hashids().encode(pk_id), unique=True)

问题是我无法使用python函数内部生成的PK !!

我怎样才能实现呢???

1 个答案:

答案 0 :(得分:0)

您可以使用session.flush()获取已分配的主键。

db.session.add(blah)
db.session.flush()
blah.uuid = hashids.encode(blah.id)
db.session.add(blah)        
db.session.commit()