小编典典

如何在sqlalchemy中创建基于文字的查询?

sql

我创建了一个用于创建表达式的函数

def test(operator1, operation, operator2):
    return literal_column(operator1).op(operation)(operator2)

现在,当我用

test(1, '=', 1)

然后就可以了

但是当我通过时

test('abc', '=', 'abc')

然后,它给出错误,即abc不是列。

我试图将其转换

def test(operator1, operation, operator2):
    return literal_column(operator1, String).op(operation)(operator2)

但这是行不通的。

如果我打电话给我

test("'abc'", '=', 'abc')

有没有办法获取operator1的类型,并在此基础上创建能够映射到相同内容类型的literal_colum?


阅读 175

收藏
2021-04-28

共1个答案

小编典典

任何文字值都可以转换为表达式构造:

from sqlalchemy import literal_column, bindparam


# ? = ?, 1 will be bound
bindparam(1) == bindparam(1)

# " 1 = 1", literals rendered inline (no quoting is applied !!)
literal_column(str(1)) == literal_column(str(1))
2021-04-28