Вставьте PDF-файл в базу данных Postgres с помощью python и извлеките его

#python #postgresql #pdf #fastapi

Вопрос:

Мне нужно сохранить небольшой PDF-файл в базе данных Postgres (у меня уже есть готовая таблица со столбцом bytea для данных), затем удалить файл и использовать данные в базе данных для восстановления PDF таким, каким он был.

Для контекста я работаю с FastApi в Python3, поэтому я могу получить файл в байтах или как целый файл. Итак, основными шагами являются:

  1. Получение файла в байтах или файла с помощью FastAPI
  2. Вставка его в базу данных Postgres
  3. Извлеките данные из БД
  4. Создайте новый PDF-файл с данными.

Как я могу сделать это чистым способом?

Функция загрузки из FastAPI :

 def import_data(file: UploadFile= File(...)):
# Put the whole data into a variable as bytes
pdfFile = file.file.read()

database.insertPdfInDb(pdfFile)

# Saving the file we just got to check if it's intact (it is)
file_name = file.filename.replace(" ", "-")
with open(file_name,'wb ') as f:
    f.write(pdfFile)
    f.close()

return {"filename": file.filename}
 

Функция вставки данных в базу данных Postgres :

 def insertPdfInDb(pdfFile):
conn = connectToDb()
curs = conn.cursor()

curs.execute("INSERT INTO PDFSTORAGE(pdf, description) values (%s, 'Some description...')", (psycopg2.Binary(pdfFile),))
conn.commit()

print("PDF insertion in the database attempted.")

disconnectFromDb(conn)
return 0

# Saving the file we just got to check if it's intact (it is)
file_name = file.filename.replace(" ", "-")
with open(file_name,'wb ') as f:
    f.write(pdfFile)
    f.close()

return {"filename": file.filename}
 

Часть экспорта только что запущена и полностью содержит код попытки и ошибки.

Комментарии:

1. Вам нужно будет показать некоторый образец кода, который вы написали и с которым работаете.

2. С каким из этих 4 шагов у вас в настоящее время возникают трудности?

3. Я могу получить файл из FastAPI и получить его в виде байтов. С этим нет проблем. Вставить его в базу данных тоже нормально, но, возможно, проблема кроется именно в этом. Извлечение данных нехорошо, как и помещение их в новый файл.