【发布时间】:2020-11-16 11:12:43
【问题描述】:
我的专栏是这样的:
Class School(db.model):
year = db.Column(INT4RANGE, nullable=False)
当我提交时:
y = NumericRange(2020,2021,'[]')
school = School(year=y)
db.session.add(school)
db.session.commit()
但是当我查询它显示的列时:
[2020,2021)
为什么会这样?为了过滤,我需要它包含下限和上限。
【问题讨论】:
-
这似乎是 SQLAlchemy 中的一个错误,
int4range(2020,2021, '[]')在“plain Postgres”中导致[2020,2022)dbfiddle.uk/… -
如果这确实是 SQLAlchemy 中的一个错误,请报告它on GitHub。
-
NumericRange实际上来自 psycopg2。 -
@a_horse_with_no_name。同一事物的不同表示:
select int4range(2020,2021, '[]') = '[2020,2021]'::int4range; ?column? ---------- t -
但是
2020,2021,'[]'与2020,2021,'[)'不同。似乎 Python 的NumericRange(2020,2021,'[]')做了一些不同于int4range(2020,2021, '[]'
标签: postgresql sqlalchemy range psycopg2