【发布时间】:2021-02-03 14:59:49
【问题描述】:
我正在使用以下代码通过 Luigi 将数据加载到 SQLite 数据库中:
class LoadData(luigi.Task):
def requires(self):
return TransformData()
def run(self):
with sqlite3.connect('database.db') as db:
cursor = db.cursor()
cursor.execute("INSERT INTO prod SELECT * FROM staging;")
def output(self):
return luigi.LocalTarget('database.db')
这可行,但是当我想更新或插入新数据时,任务不会执行,因为 Luigi 认为它已完成(database.db 已存在)。
也许我不明白 LocalTarget 的好用处。解决这个问题的正确方法是什么?
///编辑:我的问题适用于this page 上给出的示例(le_create_db.py 的代码)。您如何解决该示例中的更新和插入问题?
///编辑:This question 关于附加到文件是类似的,但是使用标记文件的解决方案不起作用,因为 sqla 需要 SQLAlchemyTarget 输出。还有其他答案,特别是关于附加到数据库的答案吗?
【问题讨论】: