Ошибка атрибута при попытке получить изображение для Python DOCX из базы данных - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь получить текст и изображения, хранящиеся в базе данных, на слово doc с помощью python docx, текст извлекается нормально, при попытке получить изображения я получаю следующую ошибку.AttributeError: у объекта '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()

Структура таблицы дБ для удобства тестирования выглядит следующим образом:

CREATE TABLE Users (
    UserID  integer,
    UserName text NOT NULL,
    UserImage Blob,
    PRIMARY KEY(`UserID`)
);

Я вижу, что ошибка генерируется из-за этой строки, document.add_picture (two).Но не понимаю причину, буду признателен за ваш вклад в то же самое.

1 Ответ

1 голос
/ 21 марта 2019

Аргумент picture для .add_picture() должен быть похожим на файл объектом.Попробуйте это так:

from StringIO import StringIO  # would be from io import BytesIO in Python3 
image_stream = StringIO(two)
document.add_picture(image_stream)
...