gpt4 book ai didi

python - Sqlalchemy:当字符串在左边,列在右边时,使用 PSQL 的 `~` 运算符

转载 作者:行者123 更新时间:2023-11-29 12:13:49 25 4
gpt4 key购买 nike

我知道

WHERE column ~ 'regexp'

这是 sqlalchemy:

where(column.op('~')('regexp'))

但我该如何创建它呢?

WHERE 'string' ~ column

(正则表达式存储在数据库中)

最佳答案

您需要创建一个 literal()bindparam() :

from sqlalchemy.sql import expression

expression.literal('string').op('~')(column)
# or
expression.bindparam('text', 'string').op('~')(column)

literal() 基本上是一个带有隐式名称的bindparam();在上面的示例中,'text' 是 SQL 语句中使用的参数的名称(键),而 'string' 是您想要显示在左侧的文本-运算符(operator)的手边。

bindparam() 给了你更多的控制权,包括传递一个calleble而不是一个具体值的能力:

def value_function():
return some_calculation_result()

expression.bindparam('calculated_value', callable_=value_function).op('~')(column)

并且 SQLAlchemy 将在向数据库服务器发送语句时调用 value_function()。如果您有值的序列,您还可以使用bindparam(),SQLAlchemy 将负责调整表达式以应用于序列中的每个值:

strings = ['string1', 'string2', ...]
expression.bindparam('one_or_more', strings).op('~')(column)
# executes `('string1' ~ column OR 'string2' ~ column OR ...)`

关于python - Sqlalchemy:当字符串在左边,列在右边时,使用 PSQL 的 `~` 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15165371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com