Unable to convert a table to hypertable due to unique index error
TimescaleDB requires that unique and primary keys include the time dimension column. While only one column can be defined as the time dimension. You can read about limitations in create_hypertable doc.

Since Flask SQL Alchemy requires a primary key, you can define a compound primary key on the time dimension column, which is start in your case, and id. Based on this doc I believe it will be:

class Price(db.Model):
    __tablename__ = "prices"
    id = db.Column(db.Integer, primary_key=True)
    country_code = db.Column(db.String(2), nullable=False)
    value = db.Column(db.Float(precision=2), nullable=False)
    start = db.Column(db.DateTime(timezone=True), primary_key=True)
    end = db.Column(db.DateTime(timezone=True), nullable=False)
    price_type = db.Column(db.String(32), nullable=False)


Then you should be able to execute create_hypertable statement successfully. It should include only column start as the time dimension, i.e.:

SELECT create_hypertable('prices', 'start', chunk_time_interval=&gt;INTERVAL '1 day')


Note that create_hypertable will also create the default index on start. Depending on your application queries you might not need this index and the primary key might be enough. In such case you can drop the index on start either by setting option create_default_indexes to false during the call to create hypertable or by executing DROP INDEX statement afterwards. The best practice section contains more information.