MySQL目标在Luigi工作流程中

时间:2016-11-03 17:37:02

标签: python mysql luigi

我的TaskB需要TaskA,并且在完成时TaskA写入MySQL表,然后TaskB将此输出作为其输入接收到表。

我似乎无法弄清楚如何在路易吉这样做。有人可以给我一个例子,或者给我一个简单的例子吗?

1 个答案:

答案 0 :(得分:9)

luigi中的现有MySqlTarget使用单独的标记表来指示任务何时完成。这是我要采取的粗略方法......但你的问题非常抽象,所以现实中可能会更复杂。

import luigi
from datetime import datetime
from luigi.contrib.mysqldb import MySqlTarget


class TaskA(luigi.Task):
    rundate = luigi.DateParameter(default=datetime.now().date())
    target_table = "table_to_update"
    host = "localhost:3306"
    db = "db_to_use"
    user = "user_to_use"
    pw = "pw_to_use"

    def get_target(self):
        return MySqlTarget(host=self.host, database=self.db, user=self.user, password=self.pw, table=self.target_table,
                           update_id=str(self.rundate))

    def requires(self):
        return []

    def output(self):
        return self.get_target()

    def run(self):
        #update table
        self.get_target().touch()


class TaskB(luigi.Task):
    def requires(self):
        return [TaskA()]

    def run(self):
        # reading from target_table