Объект Blob
(новое в Python 3.11) - это файлоподобный объект, который может читать и записывать данные в SQLite BLOB
. Объект Blob
создается методом connect.blobopen()
(добавлен в Python 3.11).
len(blob)
.Объект Blob
можно использовать в качестве диспетчера контекста, для обеспечения надежного закрытия дескриптора Blob
после использования.
Например:
con = sqlite3.connect(":memory:") con.execute("CREATE TABLE test(blob_col blob)") con.execute("INSERT INTO test(blob_col) VALUES(zeroblob(13))") # Записываем в `blob`, используя две операции записи: with con.blobopen("test", "blob_col", 1) as blob: blob.write(b"hello, ") blob.write(b"world.") # Измените первый и последний байты `blob` blob[0] = ord("H") blob[-1] = ord("!") # Прочитайте содержимое `blob` with con.blobopen("test", "blob_col", 1) as blob: greeting = blob.read() print(greeting) # "b'Hello, world!'"
Blob
модуля sqlite3
:Blob.close()
:Метод Blob.close()
закрывает объект Blob
.
С этого момента объект Blob
будет непригоден для использования. Будет вызвано исключение, если будет предпринята какая-либо дальнейшая операция с большим двоичным объектом.
Blob.read(length=- 1, /)
:Метод Blob.read()
прочитает length
байтов данных из объекта Blob
с текущей позиции смещения.
Blob
, то будут возвращены данные до EOF. length
не указана или имеет отрицательное значение, то Blob.read()
будет читать до конца.Blob.write(data, /)
:Метод Blob.write()
запишет данные в объект Blob
с текущей позиции смещения. Эта функция не может изменить длину объекта Blob
. Запись за конец Blob
вызовет ValueError
.
Blob.tell()
:Метод Blob.tell()
возвращает текущую позицию смещения к объекту Blob
.
Blob.seek(offset, origin=os.SEEK_SET, /)
:Метод Blob.seek()
устанавливает текущую позицию смещения offset
объекту Blob
.
Аргумент origin
по умолчанию имеет значение os.SEEK_SET
(абсолютное позиционирование). Другими значениями для источника являются os.SEEK_CUR
(поиск относительно текущей позиции) и os.SEEK_END
(поиск относительно конца).