存储在 Microsoft SQL 中的 Python blob PDF - 转换回 PDF

Posted

技术标签:

【中文标题】存储在 Microsoft SQL 中的 Python blob PDF - 转换回 PDF【英文标题】:Python blob PDF stored in Microsoft SQL - convert back to PDF 【发布时间】:2018-09-04 14:21:40 【问题描述】:

我有一个 PDF 文档作为 Blob 存储在 Microsoft SQL 数据库中。我正在尝试将 blob 转换回 PDF 以在内存中打开以进行分析,也可能将其保存到本地驱动器。我尝试使用“.read”保存其中一个文档,但它给了我一个错误:

ValueError: 嵌入空字节

这是我的代码/尝试:

connect = pyodbc.connect(
Driver = driver,
Server = server,
Database = database,
User = username,
Password = password)

test_query = "SELECT TOP 1 * FROM test.PDFs"

df_test = pd.read_sql(test_query, connect)

df_test_pdf = df_test['RawDocument'][0]

with open(df_test_pdf, "rb") as f:
   b = f.read

print(df_test_pdf)

【问题讨论】:

open 用于打开文件df_test_pdf 虽然不是文件。充其量,它是内存中的缓冲区。首先将其保存到磁盘以确保您可以读取它。 好的,PDF blob 在“RawDocument”列中,如何避免在内存中创建缓冲区并保存文件?当我尝试编写它时,出现此错误: df_test_pdf = df_test_pdf.write(df_test_pdf) "AttributeError: 'bytes' object has no attribute 'write'" 【参考方案1】:

我用这个解决了

with open("Output.pdf", "wb") as output_file:
    cursor.execute("SELECT TOP 1 RawDocument FROM test.PDFs")
    ablob = cursor.fetchone()
    output_file.write(ablob[0])

从这里的类似问题中得到答案:

Writing blob from SQLite to file using Python

【讨论】:

以上是关于存储在 Microsoft SQL 中的 Python blob PDF - 转换回 PDF的主要内容,如果未能解决你的问题,请参考以下文章

存储在 Microsoft SQL 中的 Python blob PDF - 转换回 PDF

如何在 Microsoft SQL Server 2017 上调试存储过程?

SQL Server 无效版本:15 (Microsoft.SqlServer.Smo)

如何使用 JDBC 将表值参数(类数组参数)传递给 Microsoft SQL Server 2008 R2 中的存储过程? [复制]

将 Microsoft SQL Server 中的数据读入 R

在 Microsoft SQL Server 中存储 IP 地址