Postgresql 如何在SQLAlchemy中使用多个属性指定范围类型边界?

Postgresql 如何在SQLAlchemy中使用多个属性指定范围类型边界?,postgresql,sqlalchemy,Postgresql,Sqlalchemy,我有一个名为“时间范围”的PostgreSQL范围列 CREATE table my_table ( time_range tstzrange ); 我想将其公开为两列“最早”和“最晚”,分别定义为范围值的下限()和上限() 似乎我可以使用或将范围值拆分为多个属性来读取: from sqlalchemy Column, func from sqlalchemy.dialects import postgresql from sqlalchemy.ext.declarative impo

我有一个名为“时间范围”的PostgreSQL范围列

CREATE table my_table (
    time_range tstzrange
);
我想将其公开为两列“最早”和“最晚”,分别定义为范围值的下限()和上限()

似乎我可以使用或将范围值拆分为多个属性来读取:

from sqlalchemy Column, func
from sqlalchemy.dialects import postgresql
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import column_property

Base = declarative_base()

class MyClass(Base):
    __tablename__ = 'my_table'
    earliest = column_property(func.lower(Column('time_range', postgresql.TSTZRANGE())))
    latest = column_property(func.upper(Column('time_range', postgresql.TSTZRANGE())))
有没有一种方法可以定义写入数据库的反向

例如,是否有一种方法来定义类,以便在将对象写回数据库时,从“最早”和“最新”属性生成范围列的值

然后,消费者/用户将执行以下操作:

instance = session.query(MyClass).first()
instance.earliest_timestamp = now
instance.latest_timestamp = now + timedelta(hours=2)
session.commit() 
# The value of the time_range column in the DB should be tstzrange(now, now+2hours)