Как записать нулевые символы в столбец bytea с помощью psycopg2 в Python - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь записать двоичные данные в столбец bytea в таблице PostgreSQL.Мои данные содержат нулевые символы, и я получаю следующую ошибку.

ValueError: A string literal cannot contain NUL (0x00) characters.

Это мой код.

import numpy as np
fft = [0.0, 0.2, 0.0215]
[float(i) for i in fft]
blob = struct.pack('%sd' % np.size(fft), *fft)
cur.execute("""INSERT INTO fft (id, v) VALUES(%s, %s)""", ("widget_fft", blob))

id имеет тип text и v имеет типbytea.

Я также пытался использовать psycopg.Binary(blob), но он вставляет обратные слеши, которые мне не нужны.

1 Ответ

0 голосов
/ 25 февраля 2019

В Python 2.7 вы должны использовать оболочку psycopg2.Binary:

cur.execute("""INSERT INTO fft (id, v) VALUES(%s, %s)""",
            ("widget_fft", psycopg2.Binary(blob)))

Подробнее см. в документации .

Это не требуется в Python3.

Я попробовал это и не видел никаких обратных наклонов.Можете ли вы показать, что именно в blob?

...