我需要自定义范围类型。我试图代表一个小时的范围。对于一周中的每一天,一个范围(datetime.time、datetime.time)而不是单独的 TIME 列,如果可能的话,我希望能够访问 Postgres/sqlalchemy 范围运算符。
我正在寻找类似 TSRANGE 但小时而不是正常的 (datetime.datetime, datetime.datetime)
在 postgres 本身中,这非常有效。例如。
create type timerange as range (subtype = time);
create table schedule
(
id integer not null primary key,
time_range timerange
);
insert into schedule
values
(1, timerange(time '08:00', time '10:00', '[]')),
(2, timerange(time '10:00', time '12:00', '[]'));
select *
from schedule
where time_range @> time '09:00'
Run Code Online (Sandbox Code Playgroud)
所以问题来了。我如何表示我在 SQLAlchemy 的 Postgres 中创建的这个自定义类型?在 TIME 上将 TSRANGE、TypeDecorator 子类化,或者可能创建一个新的 SQLALchemy UserDefinedType。我不太确定要走哪条路。任何建议将不胜感激。谢谢!