2017-05-18 1 views
0

画像をボトルにアップロードしようとしていますが、psycopg2のpostgres BYTEAカラムに挿入しようとしていますが、このエラーは、"BYTEAカラムに画像を挿入しようとすると_io.BufferedRandomをバイナリにエスケープできません"

TypeError: can't escape _io.BufferedRandom to binary 

から、データを挿入する行です。

は、ここに私のコードです:私は間違って

@route('/images', method='POST') 
def upload_image(): 
    upload = request.files.get('image') 
    img = Image.open(upload.file) # Pillow 
    binary = psycopg2.Binary(upload.file) 
    cursor = connection.cursor() 
    id = cursor.execute(
     ''' 
     INSERT INTO image (filename, data, width, height) 
     VALUES (%s, %s, %s, %s) 
     RETURNING id 
     ''', 
     (upload.filename, binary, img.width, img.height) 
    ) 
    return id 

何をしているのですか?

答えて

1

psycopg2.Binaryは文字列を受け取るが、ファイルのようなオブジェクトを受け取っているという問題かどうかは疑問です。あなたはこれらの行に沿って何か試しましたか?

binary = psycopg2.Binary(upload.file.read()) 

注:あなたが前の行のImage.openコールがupload.file内のすべてのバイトを消費します(私は推測している)ことから、最初のファイルの先頭に模索する必要があるかもしれません。

+0

申し訳ありませんが、これを受け入れることを忘れてしまい、 'file.seek(0)'でうまくいきました:) –

関連する問題