Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python从数据库检索文件_Python_Python 2.7_Pandas_Pdf_Dataframe - Fatal编程技术网

使用python从数据库检索文件

使用python从数据库检索文件,python,python-2.7,pandas,pdf,dataframe,Python,Python 2.7,Pandas,Pdf,Dataframe,我在数据库中有一列FileContent(数据类型image),它存储pdf、zip和docx文件 FileContent列在数据库中具有以下值:0x2550444… 我使用python将SQL表读入DF,列FileContent中的值包含奇怪的文本,而不是0x2550444…: %PDF-1.7\n\n4 0 obj\n(身份)\nendobj\n5 0 obj(Adobe)endobj8 0 obj>stream xœì½xÕ7>sèhµ»ZíJòKV³,bèkèeKVqaèmlènèbèn

我在数据库中有一列
FileContent
(数据类型
image
),它存储pdf、zip和docx文件

FileContent
列在数据库中具有以下值:
0x2550444…

我使用python将SQL表读入DF,列
FileContent
中的值包含奇怪的文本,而不是
0x2550444…

%PDF-1.7\n\n4 0 obj\n(身份)\nendobj\n5 0 obj(Adobe)endobj8 0 obj>stream xœì½xÕ7>sèhµ»ZíJòKV³,bèkèeKVqaèmlènèbènènè253; G™;3wæÌ™第三代移动通信(3g)技术(3g)技术(3g)技术(3g)技术(3g)技术(3g)技术(3g)技术(3g)™õõõÒèU3ý!Eý¼、rÁ«w

有没有办法使用
python
检索文件或将上面的文本转换成文件(例如PDF)

谢谢你的意见,谢谢

我的最终目标是: -从列
FileContent
中检索文件,然后提取文件中的文本

代码:


一切都很好。你看到的是相同内容的不同表示

0x255044…是第一个字节的十六进制表示形式。如果在ASCII表中查找

  • 0x25=“%”
  • 0x50='P'
  • 0x44='D'
等等。另一个文本是.pdf在文本编辑器中的样子。“stream”后面的乱码是pdf中压缩的内容

只需将整个流写入.pdf文件(使用二进制模式!)并尝试在AcrobatReader中打开即可

with open('temp.pdf', 'wb') as outfile:
    outfile.write(pdf_content_from_database)

应该可以。

一切正常。您看到的是同一内容的不同表示

0x255044…是第一个字节的十六进制表示形式。如果在ASCII表中查找

  • 0x25=“%”
  • 0x50='P'
  • 0x44='D'
等等。另一个文本是.pdf在文本编辑器中的样子。“stream”后面的乱码是pdf中压缩的内容

只需将整个流写入.pdf文件(使用二进制模式!)并尝试在AcrobatReader中打开即可

with open('temp.pdf', 'wb') as outfile:
    outfile.write(pdf_content_from_database)

应该可以。

用于
'%PDF-1.7\n
的ASCII码有
'0x25'
'0x50'
'0x44'
'0x46'
'0x2d'
'0x31'
'0x2e'
'0x37'
'0xa'

因此,
0x25504462d302e370a
只是该字符串的ASCII表示形式。而
'%PDF-1.7\n
是PDF文件的前导。这意味着您已经从数据库中正确提取了PDF文件的内容。您只需将其保存到扩展名为.PDF的文件中即可使用它

因此,假设上面的文本包含在变量
fileContent
中,其转换为pdf文件的过程如下:

with open('file.pdf', 'wb') as fd:   # binary mode
    fd.write(fileContent)

'%PDF-1.7\n
的ASCII码有
'0x25'
'0x50'
'0x44'
'0x46'
'0x2d'
'0x31'
'0x2e'
'0x37'
'0xa'

因此,
0x25504462d302e370a
只是该字符串的ASCII表示形式。而
'%PDF-1.7\n
是PDF文件的前导。这意味着您已经从数据库中正确提取了PDF文件的内容。您只需将其保存到扩展名为.PDF的文件中即可使用它

因此,假设上面的文本包含在变量
fileContent
中,其转换为pdf文件的过程如下:

with open('file.pdf', 'wb') as fd:   # binary mode
    fd.write(fileContent)

请让我们知道您使用的是什么数据库ORM。@meyer9您好,我正在使用模块:pymssql连接到MSSQL数据库。请发布一些代码。您能从数据库中检索文本吗?您好@meyer9是的,我设法检索了上面python黄色框中显示的文本。我已经发布了代码。请让我们知道是哪个数据库您正在使用的ORM。@meyer9您好,我正在使用模块:pymssql连接到MSSQL数据库。请发布一些代码。您能从数据库中检索文本吗?您好@meyer9是的,我成功地检索了上面python黄色框中显示的文本。我已经发布了我的代码。您好@Serge Ballesta,谢谢您的启发。我运行了上面的代码并得到以下错误:
fd.write(df)
TypeError:参数1必须可转换为缓冲区,而不是数据帧
code:
打开(r'C:\Users\XXX\Desktop\file.pdf,'wb')作为fd:#二进制模式
fd.write(df)
注意:df只包含
FileContent
列。@Grqm:我在数据帧方面还不是专家。您必须设法将字段的内容作为字节字符串获取。我的代码确实假设FileContent是Python字符串……您好@Serge Ballesta,谢谢您的启发。我运行了上面的代码,得到了以下错误:
fd.write(df)
类型错误:参数1必须可转换为缓冲区,而不是数据帧
code:
,打开时(r'C:\Users\XXX\Desktop\file.pdf',wb')作为fd:#二进制模式
fd.write(df)
注意:df仅包含
FileContent
列。@Grqm:我对数据帧还不是很在行。您必须设法将字段的内容作为字节字符串获取。我的代码确实假设FileContent是Python字符串。。。