postgresql - 如何使用 SQLAlchemy + Postgres 使上限包含在内
问题描述
我的专栏看起来像:
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,但这是我看到的:
create table integer_range(range_field int4range);
insert into integer_range values (int4range(2020, 2021, '[]'));
insert into integer_range values (int4range(2020, 2021, '[)'));
insert into integer_range values (int4range(2019, 2020, '[)'));
在 Python 中:
import psycopg2
from psycopg2.extras import NumericRange
con = psycopg2.connect("dbname=test user=aklaver host=localhost port=5442")
cur = con.cursor()
cur.mogrify("select * from integer_range where range_field = %s", (NumericRange(2020,2021,'[]'),))
b"select * from integer_range where range_field = '[2020,2021]'"
cur.execute("select * from integer_range where range_field = %s", (NumericRange(2020,2021,'[]'),))
rs = cur.fetchall()
rs[0]
(NumericRange(2020, 2022, '[)'),)
所以它的工作原理与 psycopg2 ene 一样。
推荐阅读
- c++ - 有没有其他方法可以为指针变量分配地址?
- reactjs - 如何将 Chessboard.js 与 Reactjs 一起使用?
- floating-point - 2个相同比例的数字的除法结果总是相同的吗?
- nuxt.js - 我使用 Nuxtjs,我无权访问 filterText 数据变量
- ios - 计算年龄:对 DateComponents 上成员的模糊引用
- docker - Docker `COPY` 文件到容器中不是持久的
- python - 计算图像顺序“流”中颜色变化的索引
- web-scraping - 使用 beautifulsoup 从 iframe 中获取价值
- r - 执行正确数据分析的步骤
- php - 表单操作正在刷新 html 页面,使其在域中生效