是否可以在peewee中的SelectQuery中实现Expression的数组切片?
我想在PostgreSQL查询中使用regexp进行模式匹配,我可以使用fn.REGEXP_MATCH(col_name, regexp)
进行匹配,但它将数组作为字符串返回,如此"['foo']"
。所以我需要在数据库端只获取带有切片的数组的第一个元素,如下所示:(regexp_match(col_name, regexp)[1]
。
我需要用orm实现这个查询:
SELECT (regexp_match(h.name, '^ATM-\w{5}-(\S+)$'))[1] FROM zbxhost h;
这次尝试将数组作为字符串返回:
ZbxHost.select(ZbxHost.name, fn.REGEXP_MATCH(ZbxHost.name, '^ATM-\w{5}-(\S+)$'))
我唯一想到的就是不使用正则表达式。在这种情况下,它是可能的,但如果将来有必要怎么办?
答案 0 :(得分:0)
您可以尝试使用" unfst"功能(通过fn.unnest)。
如果您正在寻找实现数组类型的东西,请查看playhouse / postgres_ext.py中ArrayField的实现: