Я пытаюсь использовать psycopg2
для генерации динамического оператора INSERT INTO
, где все таблицы, столбцы и значения являются динамическими.
Я прочитал документацию по классу psycopg2.SQL, который дает некоторые подсказки, однако я не могу получить окончательный результат.
# inputs to the DB. Keys represent COLS. 2 records.
kvalues = [{'first':11,'second':22},{'first':33,'second':44}]
table = 'my_table'
columns = list(kvalues[0].keys())
values = [list(kvalue.values()) for kvalue in kvalues]
# Generate SQL string
conn = psycopg2.connect(#...details..)
cur = conn.cursor()
query_string = sql.SQL("INSERT INTO {} ({}) VALUES %s").format(
sql.Identifier(table),
sql.SQL(', ').join(map(sql.Identifier, columns))).as_string(cur)
print(cur.mogrify(query_string, values))
#>> TypeError: not all arguments converted during string formatting
Я пытался добавить значения в оператор SQL, но это также приводит к дополнительным ошибкам.
Как мне сгенерировать динамическую вставку в оператор, который принимает значения cols, vals из kvalues?
Спасибо!