Как создать буквальный запрос в sqlalchemy? - PullRequest
3 голосов
/ 14 сентября 2011

Я создал одну функцию для создания выражения

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, который будет отображаться на контент того же типа?

1 Ответ

2 голосов
/ 14 сентября 2011

любое литеральное значение может быть преобразовано в конструкцию выражения:

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...