python - 将 PDF 保存在数据库中并从中提取 BLOB
问题描述
我想将 PDF 保存为数据库中的 BLOB。然后第二步是将BLOB从数据库中提取回PDF。到目前为止,这是我的代码。
import mysql.connector
from mysql.connector import Error
from mysql.connector import errorcode
connection = mysql.connector.connect(host="<ip>", user='<name>', password='', db='brs')
class db_handler():
def convert_to_binary(self, filename):
#Convert digital data to binary format
with open(filename, 'rb') as file:
binaryData = file.read()
return binaryData
def convert_from_binary(self, filename, data):
# Convert binary data to proper format and write it on Hard Disk
with open(filename, 'wb') as file:
file.write(data)
def stored_pdf(self, filename):
print("Inserting BLOB into python_employee table")
try:
cursor = connection.cursor(prepared=True)
pdf_file = self.convert_to_binary(filename)
# Convert data into tuple format
insert_blob_tuple = (pdf_file)
result = cursor.execute("INSERT INTO pdf (pdf_file) VALUES (%s)", (insert_blob_tuple,))
connection.commit()
print("Image and file inserted successfully as a BLOB into python_employee table", result)
except mysql.connector.Error as error:
connection.rollback()
print("Failed inserting BLOB data into MySQL table {}".format(error))
finally:
#closing database connection.
if(connection.is_connected()):
cursor.close()
connection.close()
print("MySQL connection is closed")
def get_pdf(self, pdf_id, filename):
print("Reading BLOB data from python_employee table")
try:
cursor = connection.cursor(prepared=True)
sql_fetch_blob_query = """SELECT pdf_file from pdf where id_pdf = %s"""
cursor.execute(sql_fetch_blob_query, (pdf_id, ))
record = cursor.fetchall()
for row in record:
data = row[0]
print("Storing pdf file on disk \n")
self.convert_from_binary(filename, data)
except mysql.connector.Error as error :
connection.rollback()
print("Failed to read BLOB data from MySQL table {}".format(error))
finally:
#closing database connection.
if(connection.is_connected()):
cursor.close()
connection.close()
print("MySQL connection is closed")
def main(self):
pass
if __name__ == "__main__":
test = db_handler()
test.stored_pdf(r"<path>")
#test.get_pdf(6, "gok.pdf")
当我执行此脚本时,它会将 PDF 作为二进制文件放入数据库中,然后我想提取它并将其转换为 PDF。它似乎可以工作,但是当我打开 PDF 时,它会打开并警告它已损坏。
解决方案
推荐阅读
- java - 使用数组时出现 Java NullPointerException
- android - eclipse photon 处理 aar 有问题吗?一般日食?如何处理?
- python - 正则表达式匹配捕获组 n 次
- angular - 在角度导入中,“导入”语句在哪里以及如何查找库文件?
- r - 将字符串转换为日期 R 西班牙语
- powershell - GetDate 负 30 分钟并以 UTC 显示
- wordpress - WordPress过滤器停止渲染站点
- powerbi - 根据切片器选择更新的动态度量
- mysql - 如何修复 create-react-app 项目中的“获取”代理错误?
- xcode - 无法将本地存储库推送到 GitHub(返回错误 403)