Как правильно связать пары (массив кортежей, многомерный массив) в SQLAlchemy? - PullRequest
1 голос
/ 08 октября 2019

Как создать запрос mysql:

SELECT *
FROM table
WHERE (key->>"$.k1", key->>"$.k2") IN ((1, "string1"), (2, "string2"))

с помощью SQLAlchemy?

Я пытался использовать text, но безуспешно:

select([table.c.value]).where(
    text('(key->>"$.k1", key->>"$.k2") IN :pairs)').bindparams(
        pairs=[(1, "string1"), (2, "string2")]
    )
)

Этополученный код:

SELECT *
FROM table
WHERE (key->>"$.k1", key->>"$.k2") IN NULL

1 Ответ

1 голос
/ 08 октября 2019

Илья Эвериля , спасибо!

Работает следующий код:

select([table.c.value]).where(
    tuple_(
        text('key->>"$.k1"'),
        text('key->>"$.k2"'),
    ).in_([[1, 'string1'], [2, 'string']])
)
...