PostgreSQL 中 SUBSTRING 的语法是SUBSTRING(<text_expr> FROM <i> FOR <j>)
。知道如何让 SQLAlchemy 核心生成它吗?我想sqlalchemy.sql.expression.func
,但这通常需要逗号分隔的符号。我没有看到内置的Function
这解决了这个问题。我不太确定是否literal
or text
会工作。有什么想法吗?
查看 SqlAlchemy 测试 https://github.com/zzzeek/sqlalchemy/blob/f572cdf7850b7a2ee6b7535b8129a76fa73496e6/test/dialect/postgresql/test_compiler.py#L881, 我找到sqlalchemy.sql.expression.func.substring
编译为SUBSTRING
for PSQL
:
def test_substring(self):
self.assert_compile(
func.substring("abc", 1, 2),
"SUBSTRING(%(substring_1)s FROM %(substring_2)s "
"FOR %(substring_3)s)",
)
self.assert_compile(
func.substring("abc", 1),
"SUBSTRING(%(substring_1)s FROM %(substring_2)s)",
)
func.substring(str, from, [for])
确实是你想要的。它是“逗号分隔的”,因为这就是 Python 方法的方式
如果你想自己生成 SQL,你可以这样做text("SUBSTRING('foo' FROM 1 FOR 2)")
,但我不明白你为什么要这么做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)