gpt4 book ai didi

python - 读取文件并转换为缓冲区对象或使用大对象函数

转载 作者:行者123 更新时间:2023-11-29 13:03:35 28 4
gpt4 key购买 nike

Craig Ringer yo no puedo trabajar con large object functions

我的数据库是这样的

这是我的 table

-- 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()

但是我下载的时候文件打不开,这个损坏了我再说一遍,我不能使用大对象函数

试试这个让我转身,你能帮忙吗?

最佳答案

updated my previous answer指示 Python 2.7 的用法。大意是read the manual并按照那里的说明进行操作。

相关部分如下:

In Python 2, you can't just pass a str directly, as psycopg2 will think it's an encoded text string, not raw bytes. You must either use psycopg2.Binary to wrap it, or load the data into a bytearray object.

So either:

 filedata = psycopg2.Binary( f.read() )

or

 filedata = buffer( f.read() )

关于python - 读取文件并转换为缓冲区对象或使用大对象函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21886216/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com