Запись в таблицу после трансформации (бонобо-sqlalchemy) - PullRequest
1 голос
/ 07 мая 2019

Я пытаюсь прочитать таблицу, изменить столбец и записать в другую таблицу. Я следовал за доступной документацией и запустил следующий код. Это не дает никаких ошибок, но задача также не выполняется.

Я попытался удалить шаг преобразования, и затем информация записывается.

import sqlalchemy
import bonobo
import bonobo_sqlalchemy


def get_services():
    return {
        'sql_alchemy.engine': sqlalchemy.create_engine('postgresql://postgres:password@localhost:5432/postgres')
    }

def transform(*row):
    new_row = row[0]+1, row[1]
    yield new_row


def get_graph(**options):
    graph = bonobo.Graph()
    graph.add_chain(bonobo_sqlalchemy.Select('SELECT * FROM users', engine='sql_alchemy.engine')
                    ,
                    transform,
                    bonobo_sqlalchemy.InsertOrUpdate(table_name='table_1', engine='sql_alchemy.engine'),
                    )
    return graph

# The __main__ block actually execute the graph.
if __name__ == '__main__':
    parser = bonobo.get_argument_parser()
    with bonobo.parse_args(parser) as options:
        bonobo.run(get_graph(**options), services=get_services(**options))

Выход: - Выберите в = 1 из = 6 [готово] - format_for_db in = 6 out = 6 [сделано] - InsertOrUpdate in = 6 out = 6 [done]

1 Ответ

0 голосов
/ 09 мая 2019

Работает, если словарь получен следующим образом:

yield {"id": row[0], "text": row[1], "count":row[2]}

с bonobo.UnpackItems(0) узлом в цепочке после преобразования.

...