12

バイナリデータ(ワールプールハッシュ)をPGテーブルに挿入しようとしていますが、エラーが発生します:

TypeError: not all arguments converted during string formatting 

コード:

cur.execute("""
    INSERT INTO
        sessions
        (identity_hash, posted_on)
    VALUES
        (%s, NOW())
""", identity_hash) 

挿入する前にconn.Binary( "identity_hash")を変数に追加しようとしましたが、同じエラーが発生します。

Identity_hash列はbyteaです。

何か案は?

4

3 に答える 3

33

問題は、オブジェクトを 2 番目のパラメーターとして渡していることです。2 番目のパラメーターは、タプルまたは辞書のいずれかにする必要があります。% 文字列演算子のようなショートカットはありません。

やったほうがいい:

cur.execute("""
    INSERT INTO
        sessions
        (identity_hash, posted_on)
    VALUES
        (%s, NOW())
""", (identity_hash,))
于 2009-09-29T12:14:57.493 に答える
6

psycopg2 ソース配布の「examples/binary.py」スクリプトを見ましたか? ここではうまく機能します。抜粋とは少し異なります。

data1 = {'id':1, 'name':'somehackers.jpg',
     'img':psycopg2.Binary(open('somehackers.jpg').read())}

curs.execute("""INSERT INTO test_binary
              VALUES (%(id)s, %(name)s, %(img)s)""", data1)
于 2009-04-27T16:10:04.573 に答える