Вставка строк в postgresql через pyscopg2

1

Я пытаюсь вставить некоторые строковые значения в postgresql db. а именно:

macaddress,
timestamp (date time format)
type of device (string)
subtype (string)

пример:

INSERT INTO device (address, tstamp, type, subtype) 
     VALUES ('00:00:00:00','2012-02-22 19:31:26','computer','notebook')

Я использую скрипт psythopg2 python для вывода данных и появляется следующая ошибка:

c.executemany("INSERT INTO device VALUES (default, '%s','%s','%s','%s')", 
              (mac, date, typedev, subtype,))
TypeError: not all arguments converted during string formatting

команда, которую я использую для вставки:

c.executemany("INSERT INTO device VALUES (default, '%s','%s','%s','%s')", 
              (mac, date, typedev, subtype,))
Теги:
psycopg2

1 ответ

3

Есть пара проблем:

  1. Вам не нужно указывать местозаполнители параметров (%s). Хорошие люди psycopg2 гарантируют, что это будет сделано правильно для вас.
  2. executemany() ожидает последовательность параметров.

Так как вы только вставляете одну строку, вы можете просто использовать execute():

c.execute("INSERT INTO device VALUES (default,%s,%s,%s,%s)", 
          (mac, date, typedev, subtype,))

Когда вам нужно использовать executemany() забудьте передать ей последовательность параметров, например:

c.executemany("INSERT INTO device VALUES (default,%s,%s,%s,%s)", 
              [(mac, date, typedev, subtype,),])

Ещё вопросы

Сообщество Overcoder
Наверх
Меню