繁体   English   中英

将抓取的二进制文件写入 blob,而无需先将其写入磁盘

[英]write scraped binary file to blob without first writing it to disk

我使用requests库从网站检索二进制文件。 我现在想将它作为 BLOB 存储在 MySQL 中。 我不想采取将文件写入磁盘的中间步骤。 做这个的最好方式是什么?

目前,我正在使用base64对二进制文件进行编码,以便 MySQL 会接受它,就像在这个建议中一样。 这是最好的策略,还是有办法让我跳过编码(以及检索文件时的后续解码)?

最小的例子:

import base64
import pymysql
import requests

myPDF = requests.get("https://arxiv.org/pdf/2004.00627.pdf")
myPDF_encoded = base64.b64encode(myPDF.content)
conn = pymysql.connect(
  host   = "127.0.0.1",
  user   = user,
  passwd = password,
  db     = "myDB")
cur = conn.cursor()

insertLine = "INSERT INTO myDB (PDF) VALUES (%s)"
cur.execute(insertLine, myPDF_encoded)
conn.commit()          

许多帖子都谈到了将二进制文件写入 BLOB 的一般问题,但据我所知,所有帖子都是从从磁盘读取文件的假设开始的。

现代版本的 mySQL 更好的解决方案:跳过 base64 编码,并使用_binary %s发送二进制数据,或者在设置 pymysql 连接时添加binary_prefix = True选项。 例如,

import pymysql
import requests

myPDF = requests.get("https://arxiv.org/pdf/2004.00627.pdf")
conn = pymysql.connect(
  host          = "127.0.0.1",
  user          = user,
  passwd        = password,
  db            = "myDB",
  binary_prefix = True)
cur = conn.cursor()

insertLine = "INSERT INTO myDB (PDF) VALUES (%s)"
cur.execute(insertLine, myPDF)
conn.commit()  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM