Карта словаря Python в строку SQL с пониманием списка

У меня есть словарь Python, который отображает имена столбцов из исходной таблицы в целевую таблицу.

Примечание. На этот вопрос был дан ответ в предыдущем потоке для другой строки запроса, но эта строка запроса более сложна, и я не уверен, что ее можно сгенерировать с использованием того же метода понимания списка.

Словарь:

tablemap_computer = {
    'ComputerID' : 'computer_id',
    'HostName' : 'host_name',
    'Number' : 'number'
}

Мне нужно динамически создать следующую строку запроса, чтобы она правильно обновлялась при добавлении новых пар имен столбцов в словарь.

(ComputerID, HostName, Number) VALUES (%(computer_id.name)s, %(host_name)s, %(number)s)

Я начал с понимания списка, но пока смог сгенерировать только первую часть строки запроса с помощью этой техники.

queryStrInsert = '('+','.join([tm_val for tm_key, tm_val in tablemap_incident.items()])+')'
print(queryStrInsert)

#Output
#(computer_id,host_name,number)
#Still must generate the remaining part of the query string parameterized VALUES

person pengz    schedule 13.01.2017    source источник


Ответы (1)


Если я понимаю, чего вы пытаетесь добиться, вы можете сделать это следующим образом:

holder = list(zip(*tablemap_computer.items()))

"insert into mytable ({0}) values ({1})".format(",".join(holder[0]), ",".join(["%({})s".format(x) for x in holder[1]]))

Это должно дать:

# 'insert into mytable (HostName,Number,ComputerID) values (%(host_name)s,%(number)s,%(computer_id)s)'

Надеюсь, это поможет.

person Abdou    schedule 13.01.2017