#python #sqlite #python-docx
#python #sqlite #python-docx
Вопрос:
Я пытаюсь перенести текст и изображения, хранящиеся в базе данных, в документ word с помощью python docx, текст извлекается нормально, при попытке извлечь изображения я получаю следующую ошибку. Ошибка атрибута: объект ‘bytes’ не имеет атрибута ‘seek’. Код приведен ниже.
import sqlite3
from docx import Document
document = Document()
name = "The heading of the report"
document.add_heading(name,0)
connection = sqlite3.connect("demo.db")
cursor = connection.cursor()
cursor.execute("SELECT * FROM Users where UserID = 1")
images in binary format
data = cursor.fetchall()
for row in data:
zero = row[0]
one = row[1]
two = row[2]
document.add_paragraph(str(zero))
document.add_paragraph(str(one))
document.add_picture(two)
document.save('UserReport.docx')
connection.close()
Структура таблицы dB для удобства тестирования выглядит следующим образом:
CREATE TABLE Users (
UserID integer,
UserName text NOT NULL,
UserImage Blob,
PRIMARY KEY(`UserID`)
);
Я вижу, что ошибка генерируется из-за этой строки document.add_picture (два). Но не понимаю причины, был бы признателен за ваши комментарии по этому поводу.
Ответ №1:
picture
Аргументом .add_picture()
должен быть файлоподобный объект. Попробуйте это таким образом:
from StringIO import StringIO # would be from io import BytesIO in Python3
image_stream = StringIO(two)
document.add_picture(image_stream)