我创建了一个用于创建表达式的函数
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?
任何文字值都可以转换为表达式构造:
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))