sql >> Databasteknik >  >> RDS >> Mysql

MySQL-mål i Luigi arbetsflöde

Det befintliga MySqlTarget i luigi använder en separat markörtabell för att indikera när uppgiften är klar. Här är det grova tillvägagångssättet jag skulle ta...men din fråga är väldigt abstrakt, så den är sannolikt mer komplicerad i verkligheten.

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



  1. Lägg till nya kolumner i befintlig tabell i en migrering i Laravel

  2. Finns det något sätt att låta MySQL-servern "pusha" DB-uppdateringar till ett klientprogram?

  3. Hur använder man Partition By eller Max?

  4. JDBC konverterar tidsstämpel till NULL (problem med zeroDateTimeBehavior)