Postgresql 如何在SQLAlchemy中使用多个属性指定范围类型边界?
我有一个名为“时间范围”的PostgreSQL范围列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
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)