2012-03-08 16 views
1

私はいくつかの文字列値をpostgresql dbに挿入しようとしています。すなわち:pyscopg2からpostgresqlへの文字列の挿入

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

例:

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

私が使用しているコマンドを:私はデータをダンプするためのpython psycopg2スクリプトを使用していて、次のエラーが表示されている

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

挿入物は:

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

答えて

3

  1. パラメータプレースホルダ(%s)を引用する必要はありません。 psycopg2の善良な人々は、それがあなたのために適切に行われることを保証します。
  2. executemany()expects a sequence of parameters。あなただけの1行を挿入しているので、

だから、あなただけ​​を使用することができます。

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,),])