не удалось преобразовать BLOB в буфер - Sqlite3 - PullRequest
1 голос
/ 18 сентября 2011

Я пытаюсь сохранить HTML как BLOB-объект в БД sqlite3. Тем не менее, я получаю следующую ошибку «не удалось преобразовать BLOB в буфер». Я мог бы сохранить HTML как текст, но я сталкиваюсь с ошибками Unicode.

Так что мой нынешний подход такой.

def update(self, table_name, column, value, searchColumn, searchValue, BLOB=False):
    ''' Update a single column with a value
        column: column to update
        value: Value to be updated
        searchColumn: Find record with this column
        searchValue: Value of search column
    '''
    if (BLOB == False):
        sql_query = "update %s set %s = ? where %s = '%s';" % (table_name, column, value, searchColumn, searchValue)
        self.conn.execute(sql_query)
    else:
        sql_query = "update %s set %s = ? where %s = '%s';" % (table_name, column, searchColumn, searchValue)
        print sql_query
        self.conn.execute(sql_query, (sqlite3.Binary(value),))

    self.conn.commit()

И код для вставки HTML-кода

        self.urlDB.update("URL", "content", content, "address", this_url, BLOB=True)

контент - Unicode-версия HTML. Из этого я получаю вышеуказанную ошибку. Может кто-нибудь сказать мне, что в настоящее время не так с этим кодом? Или, если я могу сохранить его как текст, как бы я использовал вышеупомянутый интерфейс, чтобы сохранить его как текст. HTML в настоящее время читается так.

def fetch(self):
    request, handle = self._open()
    self._addHeaders(request)
    if handle:
        try:
            data=handle.open(request)
            mime_type=data.info().gettype()
            url=data.geturl();
            if mime_type != "text/html":
                raise OpaqueDataException("Not interested in files of type %s" % mime_type,
                                          mime_type, url)
            self.content = unicode(data.read(), "utf-8",
                                   errors="replace")

Я видел другие ответы на эту проблему, но, похоже, они не помогли в этом случае. Спасибо

...