Чтение и запись данных в поле SQLite с типом BLOB.
Объект Blob
(
новое в Python 3.11) - это файлоподобный объект, который может читать и записывать данные в SQLite
BLOB
. Объект
Blob
создается методом
connect.blobopen()
(
добавлен в Python 3.11).
- Чтобы получить размер (количество байтов) большого двоичного объекта, необходимо вызвать
len(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
, то будут возвращены данные до 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
(поиск относительно конца).