Использование Python 2.7, я храню веб-страниц в SQLite в столбец типа BLOB:разархивировав BLOB из SQLite с Python
Компрессия с Zlib, и я вставив его как тип sqlite3.Binary.
Без сжатия это работает отлично:
db_body = sqlite3.Binary(page_body)
dbc.execute("insert into table (content) values ?", db_body)
С компрессией работает отлично:
db_body = sqlite3.Binary(zlib.compress(page_body))
dbc.execute("insert into table (content) values ?", db_body)
Проблема возникает, когда я пытаюсь извлечь сжатые данные. Я попытался следующие:
dbc.execute("select content from table limit 1")
sql_result = dbc.fetchone()
page_content = zlib.decompress(sql_result[0])
Но результат (page_content
) тип Обл, который по-прежнему сжаты. Ошибок и исключений нет. Тип содержимого sql_result[0]
- это Buffer, поэтому функция распаковки меняет тип данных, но не содержимое.
Если сжать и пережать в то же время, не подвергая его через SQLite, выход нормально:
db_body = sqlite3.Binary(zlib.compress(page_body))
page_content = zlib.decompress(db_body)
Итак, как же я распаковывать данные, которые я вставил, а затем извлекаемые из SQLite?
Как вы получаете squl_result? Укажите минимальный, полный и проверенный пример: https://stackoverflow.com/help/mcve – Setop