Невозможно преобразовать текстовый столбец PostgreSQL в bytea

В моем приложении я использую таблицу базы данных postgresql с "текст" колонка для хранения маринованных объектов Python. Как драйвер базы данных яЯ использую psycopg2, и до сих пор я передавал только строки Python (не объекты Unicode) в БД и извлекал строки из БД. Это в основном работало хорошо, пока я недавно не решил сделать String-обработку лучше / правильнее и добавил следующую конструкцию к моему уровню DB:

psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
psycopg2.extensions.register_type(psycopg2.extensions.UNICODEARRAY)

Это в основном работает везде в моем приложении, и яиспользуя unicode-объекты, где это возможно сейчас.

Но для этого особого случая с текстовым столбцом, содержащим маринованные объекты, это создает проблемы. Я получил его в моей тестовой системе следующим образом:

извлечение данных:SELECT data::bytea, params FROM mytableзапись данных:execute("UPDATE mytable SET data=%s", (psycopg2.Binary(cPickle.dumps(x)),) )

... но, к сожалению, яm получаю ошибки с помощью SELECT для некоторых столбцов в производственной системе:

psycopg2.DataError: invalid input syntax for type bytea

Эта ошибка также происходит, когда я пытаюсь выполнить запрос в оболочке psql.

В основном ям планирую перевести из колонки втекст" к "BYTEA», но ошибка выше также мешает мне сделать это преобразование.

Насколько я вижу, (при извлечении столбца как чистой строки Python) есть только символы с ord (c) <= 127 в строке.

Ответы на вопрос(1)

Ваш ответ на вопрос