小编con*_*emi的帖子

自定义 postgres 范围类型的 Sqlalchemy 表示

我需要自定义范围类型。我试图代表一个小时的范围。对于一周中的每一天,一个范围(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。我不太确定要走哪条路。任何建议将不胜感激。谢谢!

python postgresql sqlalchemy psycopg2 flask-sqlalchemy

5
推荐指数
1
解决办法
1359
查看次数