2014-02-19 2 views
0

Craig Ringer Ican не работают функции капелька большой объект Моя база данных выглядит следующим образом это мой столсохранить файл (.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() 
Смежные вопросы