Связать агрегатную функцию в python, используя postgresql и sql alchemy - PullRequest
0 голосов
/ 02 июля 2018
    import sqlalchemy as sa
    query = sa.text('''
        with t1 as (
            select :aggregate_fn(value), item_id 
            from items 
            where item_id = :item_id and item_time > :fromm and item_time < :until 
            group by item_id
        )
        SELECT coalesce(array_to_json(array_agg(t1)), '[]')::text::bytea FROM t1
    ''').bindparams(fromm='2018-05-16', until='2018-05-17', item_id=2, aggregate_fn='min')
    result = engine.execute(query).scalar()
    item_records = result.tobytes().decode('utf8').replace("'", '"')
    items = json.loads(item_records)

У меня есть таблица предметов, содержащая item_id, item_time и item_value. Вопрос в том, как я могу собрать значение во время выполнения из кода Python. Например, я использую item_id во время выполнения, используя параметры связывания. Но когда я пытаюсь сделать то же самое с агрегатными функциями, это выдает мне ошибку.

sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) синтаксис ошибка в или около "("

Как связать функцию агрегата во время выполнения из кода Python.

...