Как вернуть строку обратно к списку массивов - PullRequest
0 голосов
/ 09 мая 2020

В некотором смысле, я работаю в Airflow и обмениваюсь данными между объектами задач в группе DAG. Python версия - 3.6.5.

У меня есть метод, который запрашивает в базе данных набор строк, который возвращается в виде списка массивов, который выглядит следующим образом:

[
('database_name','schema_name','table_name'),
('database_name','schema_name','table_name2'),
('database_name','schema_name','table_name3')
]

Право, когда это создано, я могу легко перебирать значения с помощью для l oop. Однако я сталкиваюсь с проблемой, когда я передаю его через переменную XCOM, чтобы список массивов мог быть передан и использован следующим объектом задачи. Все это преобразуется в строку в пути, и поэтому я не могу перебирать массивы и их значения с помощью для l oop в следующем объекте задачи назначения.

Есть ли спецификация c способ вернуть эту строку в список массивов? Я пробовал несколько способов, которые нашел в Интернете, но в итоге они просто разбивали все на отдельные символы или какой-то другой результат, который отличается от исходного состояния. Любой совет приветствуется.

Заранее спасибо.

1 Ответ

1 голос
/ 09 мая 2020

Я полагаю, вы пытаетесь получить переменную XCom через шаблоны, поэтому String. Измените Оператор, который будет использовать ваш список массивов.

class OperatorThatPullsTheArray(BaseOperator):
    ...
    def execute(self, context):
        list_of_arrays = context['ti'].xcom_pull(task_ids=self.prev_task_id) #pass the prev task id
        for array in list_of_arrays:
            ...

Также не рекомендуется использовать XCom для передачи больших значений.

...