Если я использую цель SQL, Луиджи хочет записать в полную таблицу, кажется,
Я думаю, вы неправильно поняли, что такое Target
.Он не «делает что-то», он просто используется, чтобы сигнализировать Луиджи, закончил ли Task
или нет.
Насколько я понял, я думаю, что вы пытались использовать один из этих CopyToTable
такие задачи, как эта , и они действительно предназначены для заполнения нескольких строк за цикл, поэтому, если вы хотите заполнить один столбец, вам, вероятно, следует создать собственный Task
и создать собственный запрос SQL.
К счастью, вы все еще можете использовать цель SQL в качестве вывода и получить от нее соединение с базой данных.
Пример
Здесь я использовал MySqlTarget
в качестве цели, но вы можете использовать другие цели SQL.
class WriteSingleColumnTask(lg.Task):
def output():
return MySqlTarget(
host=self.host,
database=self.database,
user=self.user,
password=self.password,
table=self.table,
update_id=self.update_id
)
def run():
output=self.output()
connection = output.connect()
connection.autocommit = self.autocommit
cursor = connection.cursor()
query = "<YOUR QUERY FOR A SINGLE COLUMN HERE>"
cursor.execute(sql)
# Update marker table
self.output().touch(connection)
# commit and close connection
connection.commit()
connection.close()
Пример из здесь .