Невозможно преобразовать текстовый столбец 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)),) )

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

psycopg2.DataError: invalid input syntax for type bytea

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

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

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

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

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