pythonのpsycopg2を使用してバイナリデータを保存するときに「エラーを適応させることができない」を解決する方法

StackOverflow https://stackoverflow.com/questions/2149515

質問

私は、私たちのプロジェクトの一つで、今日、このバグを越え3回走りました。将来の参考のために、オンラインの問題と解決策を置くます。

impost psycopg2

con = connect(...)

def save(long_blob):
     cur = con.cursor() 
     long_data = struct.unpack('<L', long_blob)
     cur.execute('insert into blob_records( blob_data ) values (%s)', [long_data])

これはpsycopg2から「適応することはできません」というエラーで失敗します。

役に立ちましたか?

解決

問題が展開する唯一の値であっても、タプル結果struct.unpack戻ります。あなたは項目が1つしかない場合でも、あなたはタプルから最初の項目をつかむことを確認する必要があります。それ以外の場合はpsycopg2のSQL引数の構文解析は「適応することはできません」というエラーメッセージを与える文字列にタプルを変換しようと失敗します。

impost psycopg2

con = connect(...)

def save(long_blob):
     cur = con.cursor() 
     long_data = struct.unpack('<L', long_blob)

     # grab the first result of the tuple
     long_data = long_data[0]

     cur.execute('insert into blob_records( blob_data ) values (%s)', [long_data])

他のヒント

「適応できない」psycopgは、あなたのlong_blob変数の型を知らない場合に発生します。それはどのようなタイプですか?

あなたは簡単に psycopgを伝えるために、アダプタを登録することができますどのようにデータベースの値を変換します。

が数値であるので、可能性は ASIS <ことです/ A>アダプタだろう、すでにあなたのために仕事ます。

scroll top