2010-01-27 23 views

回答

4

問題是struct.unpack返回一個元組結果,即使只有一個值需要解壓。即使只有一個項目,您也需要確保從該元組中獲取第一個項目。否則,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]) 
1

「無法適應」的時候psycopg不知道你long_blob變量的類型提高。它是什麼類型?

您可以輕鬆地register an adapter告訴psycopg如何轉換數據庫的值。

由於它是一個數值,因此AsIs適配器可能已經適合您。

+0

在這種情況下,我的類型是一個二進制字符串,但包含在由struct.unpack返回的元組中。類似於('0x001122')而不是'0x001122'。我想我們可以做一個元組提取器,但現在這只是記錄我們的錯誤。感謝你的回答。 – 2010-02-16 18:53:14

相關問題