不使用主键的Flask SQLAlchemy自动增量

时间:2019-11-14 11:14:20

标签: python sqlalchemy

我想在SQLAlchemy中的字段ID上使用autoincrement选项,而无需将该列设置为主键。像这样:

class CaseModel(db.Model):
__tablename__ = 'case'

unique_id = db.Column(UUID(as_uuid=True), unique=True, nullable=False, primary_key=True)
id = db.Column(db.Integer(), autoincrement=True)

有可能吗?

1 个答案:

答案 0 :(得分:0)

您可以使用混合属性来做到这一点:

class CaseModel(db.Model):
    __tablename__ = 'case'
    CURRENT_ID_VALUE = 1

    unique_id = db.Column(UUID(as_uuid=True), unique=True, nullable=False, primary_key=True)
    _id = db.Column(db.Integer())

    @hybrid_property
    def id(self):
        return self._id

    @id.setter
    def id(self, _):
        self._id = CaseModel.CURRENT_ID_VALUE
        CaseModel.CURRENT_ID_VALUE += 1