2014-02-19 38 views
0

克雷格·林格伊燦不行白衣大對象功能 我的數據庫看起來像這樣 這是我的表保存文件(.PDF)數據庫絲毫蟒蛇2.7

-- Table: files 
-- 
DROP TABLE files; 

CREATE TABLE files 
( 
id serial NOT NULL, 
    orig_filename text NOT NULL, 
file_data bytea NOT NULL, 
    CONSTRAINT files_pkey PRIMARY KEY (id) 
) 
WITH (
    OIDS=FALSE 
); 
ALTER TABLE files 

我想保存的.pdf在我的數據庫,我看到你做的最後答案,但使用python27(讀取該文件,並轉換爲一個緩衝區對象或者使用大對象的功能)

我的代碼看起來像

path="D:/me/A/Res.pdf" 
listaderuta = path.split("/") 
longitud=len(listaderuta) 
f = open(path,'rb') 
f.read().__str__() 
cursor = con.cursor() 
cursor.execute("INSERT INTO files(id, orig_filename, file_data) VALUES (DEFAULT,%s,%s) RETURNING id", (listaderuta[longitud-1], f.read())) 

但是當我下載的,我救

fula = open("D:/INSTALL/pepe.pdf",'wb') 
cursor.execute("SELECT file_data, orig_filename FROM files WHERE id = %s", (int(17),)) 
(file_data, orig_filename) = cursor.fetchone() 
fula.write(file_data) 
fula.close() 

,但是當我下載的文件無法打開,這破壞我再說一遍,我不能與大對象職能的工作

試試這個,轉過身來,你能幫忙嗎?

回答

1

我在想,psycopg2二進制函數不使用lob函數。

因此,我用.....

path="salman.pdf" 
f = open(path,'rb') 
dat = f.read() 
binary = psycopg2.Binary(dat) 
cursor.execute("INSERT INTO files(id, file_data) VALUES ('1',%s)", (binary,)) 
conn.commit()