2016-09-09 10 views
0

PostgreSQLのテーブルに、タイプがbyteaのカラムがあります。 SQLiteからそのテーブルを移植すると、問題が発生しました。生のバイナリデータをSQLクエリに渡す方法がわかりませんでした。私が使用するフレームワークはPyGreSQLです。私は多くの変換を避けるためにDB-API 2.0インターフェースに固執したいと思います。
古典的なもの(ドル記号のパラメータ)やSQLite(疑問符のパラメータ)と違って、そのインタフェースは型(%-formattingを古いPythonのように)を指定する必要があります。
私が渡したいデータは、open()メソッドで'rb'フラグを使用してバイナリで読み取られたPNGファイルです。
クエリコードは次のようになります。BytestringをPyGreSQLに渡すには?

db = pgdb.connect(args) 
c = db.cursor() 
c.execute('INSERT INTO tbl VALUES (%b)', (b'test_bytes',)) 

これはエラーunsupported format character 'b' (0x62) at index 54を与え、フォーマットが発生することはできません。この問題を解決するために何ができましたか?

答えて

0

解決策ではありませんが、十分な回避策です。 PyGreSQLの代わりにpsycopg2を使用することを決定しました。これは一般的な問題についての情報を簡単に見つけることができます。
あり、解決策は、私はそんなに多くのPython的(動的型付け言語でのタイプについて考える必要はありません)

を見つけるすべてのタイプのための%sを使用することです、私のクエリは次のようになります。

c.execute('INSERT INTO tbl VALUES (%s)', (b'test_bytes',)) 
関連する問題