Вставка данных BLOB-объектов в Sqlite3 (GeoPackage) - PullRequest
0 голосов
/ 11 января 2019

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

Вот инструкция create для генерации набора данных ломаной линии.

CREATE TABLE line 
(OBJECTID INTEGER primary key autoincrement not null, 
Shape MULTILINESTRING)

WKB выглядит следующим образом:

bytearray(b'\x01\x05\x00\x00\x00\x02\x00\x00\x00\x01\x02\x00\x00\x00\x04\x00\x00\x00\x96C\x8b\x9a\xd0@`\xc18\xd6\xc5=\xd2\xc5RA\x93\xa9\x825\x02=`\xc1\xb0Y\xf5\xd1\xed\xa6RAZd;W\x913`\xc1 Zd\xfb\x1c\xc0RA\xaa\x82Q%p/`\xc18\xcd;\x92\x19\xaeRA\x01\x02\x00\x00\x00\x03\x00\x00\x00z\xc7)TzD`\xc1\xb8\x8d\x06\xb8S\x9fRA\xbb\xb8\x8d:{"`\xc1X\xec/\xb7\xbb\x9eRA\x00\x91~Eo"`\xc1\x00\xb3{F\xff]RA')

Когда я иду, чтобы вставить двоичные данные в столбец, я не получаю сообщение об ошибке, он просто вставляет NULL.


sql = """INSERT INTO line (Shape)
                 VALUES(?)"""
val = [binaryfromabove]
cur.execute(sql, val)

Я также пытался использовать sqlite3.Binary():

sql = """INSERT INTO line (Shape)
                 VALUES(?)"""
val = [sqlite3.Binary(binaryfromabove)]
cur.execute(sql, val)

Вставляемая строка всегда NULL.

Есть идеи, что происходит?

...