SQLAlchemy Core - генерирует выражение PostgreSQL SUBSTRING? - PullRequest
1 голос
/ 15 марта 2019

Синтаксис SUBSTRING в PostgreSQL: SUBSTRING(<text_expr> FROM <i> FOR <j>). Любая идея, как заставить ядро ​​SQLAlchemy генерировать это? Я пытаюсь sqlalchemy.sql.expression.func, но это ожидает, как правило, через запятую запись. Я не вижу встроенный Function, который решает эту проблему. Я не совсем уверен, сработает ли literal или text. Есть мысли?

1 Ответ

2 голосов
/ 15 марта 2019

Просматривая тесты SqlAlchemy , я обнаружил, что sqlalchemy.sql.expression.func.substring компилируется в SUBSTRING для PSQL:

    def test_substring(self):
        self.assert_compile(
            func.substring("abc", 1, 2),
            "SUBSTRING(%(substring_1)s FROM %(substring_2)s "
            "FOR %(substring_3)s)",
        )
        self.assert_compile(
            func.substring("abc", 1),
            "SUBSTRING(%(substring_1)s FROM %(substring_2)s)",
        )

func.substring(str, from, [for]) действительно то, что вы хотите. Это "с разделением запятыми", потому что именно так методы Python

Если вы хотите сгенерировать SQL самостоятельно, вы можете сделать что-то вроде text("SUBSTRING('foo' FROM 1 FOR 2)"), но я не понимаю, почему вы это сделаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...