Python, Sqlite3 - Как преобразовать список в ячейку BLOB

Мы нашли решение проблемы. Первоначально у нас был этот код для создания изображения:

            Response.ContentType = "image/svg+xml";
            Response.Flush();
            string imageTextUtf8 = Encoding.UTF8.GetString(imageByteData, 0, imageByteData.Length);
            Response.Write(imageTextUtf8);

Это не работало с IIS 7.5, Response.Flush () , кажется, удаляет Content-Type в IIS 7.5. (Но не в IIS 10 или ASP.NET Development Server 11.)

При использовании следующего кода Content-Type не удаляется и все работает нормально.

            Response.ContentType = "image/svg+xml";
            string imageTextUtf8 = Encoding.UTF8.GetString(imageByteData, 0, imageByteData.Length);
            Response.Write(imageTextUtf8);
            Response.Flush();
9
задан Noah 14 February 2009 в 01:00
поделиться

3 ответа

Принятие Вас хочет это, рассматривал как последовательность 8-разрядных неподписанных значений, используйте array модуль.

a = array.array('B', data)
>>> a.tostring()
'\x00\x01\x02\x03\x04\x05'

Используйте другой typecodes, чем 'B' если Вы хотите рассматривать данные как различные типы. например, 'b' для последовательности байтов со знаком, или 'i' для целого числа со знаком.

8
ответ дан 4 December 2019 в 06:49
поделиться

Кажется, что решение Brian соответствует Вашим потребностям, но имейте в виду это с тем методом то, что вы просто хранили данные как строка.

Если Вы хотите хранить необработанные двоичные данные в базу данных (таким образом, она не поднимает столько же пространства), преобразуйте свои данные в Двоичный файл sqlite, возражают и затем добавляют его к Вашей базе данных.

query = u'''insert into testtable VALUES(?)'''
b = sqlite3.Binary(some_binarydata)
cur.execute(query,(b,))
con.commit()

(По некоторым причинам это, кажется, не документируется в документацию Python),

Вот некоторые примечания по sqlite ограничениям данных BLOB:

http://effbot.org/zone/sqlite-blob.htm

19
ответ дан 4 December 2019 в 06:49
поделиться

См. Это общее решение на SourceForge, которое охватывает любой произвольный объект Python (включая список, кортеж, словарь и т. Д.):

y_serial.py module :: хранилище объектов Python с SQLite

«Сериализация + постоянство :: в нескольких строках кода сжимайте и аннотируйте объекты Python в SQLite; а затем извлекайте их в хронологическом порядке по ключевым словам без какого-либо SQL. Самый полезный« стандартный »модуль для базы данных для хранения данных без схемы.» [

http://yserial.sourceforge.net

2
ответ дан 4 December 2019 в 06:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: