1

I would like to use the autoincrement option on the field id in SQLAlchemy without setting the column as a primary key. Something like that:

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)

Is that possible?

davidism
  • 121,510
  • 29
  • 395
  • 339
Y.kh
  • 163
  • 2
  • 6

1 Answers1

0

You can do it using hybrid property:

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