我为create expression
创建了一个函数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,它将映射到相同类型的内容?
答案 0 :(得分:2)
任何文字值都可以转换为表达式构造:
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))