栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

SQLAlchemy:如何筛选PgArray列类型?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SQLAlchemy:如何筛选PgArray列类型?

a = ANY(b_array)
等于1。
a
IN
(elements_of_b_array)

因此,您可以使用该

in_()
方法。

我不记得曾经使用

a = ALL(b_array)
PostgreSQL多年。你?


如果您要处理 数组列, 并想测试该 列中
是否包含给定元素(或给定数组的所有元素),则可以利用PostgreSQL数组运算符

@>
contains
)或更合适地利用反同级
<@
iscontained by
)。

数组运算符的优点是可以通过数组列上的 GIN索引 来支持它们(与

ANY
构造不同)。

您的SQL语句:

SELECt * FROM my_table WHERe 10000 = ANY (array_field);

(几乎)等于1

SELECt * FROM my_table WHERe 10000 <@ array_field;

我不是SQLAlchemy的专家,但是根据SQLAlchemy手册中的教程,您可以使用任何运算符:

如果遇到确实不可用的运算符,则可以始终使用该

op()
方法。这将生成您需要的任何运算符:

>>> print users.c.name.op('tiddlywinks')('foo') users.name tiddlywinks

:name_1

大胆强调我的。您的语句在SQLA中可能如下所示:

s = select([my_table], array_field.op('@>')('ARRAY[10000]'))

或使用PostgreSQL数组值的替代输入语法:

s = select([my_table], array_field.op('@>') (cast('{10000}', int[])))

1与NULL处理有一个细微的区别:

SELECT '{NULL}'::int[] <@ ... -- that's an array with a single NULL element

总是屈服

FALSE

SELECT NULL IN (...)SELECT NULL = ANY (...)SELECT NULL::int[] <@ ...

总是屈服

NULL

如果您不打算查询

NULL
值,则可以忽略它。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/410928.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号