Nie można przekonwertować kolumny tekstowej PostgreSQL na bajt

W mojej aplikacji używam tabeli bazy danych postgresql z kolumną „tekstową” do przechowywania marynowanych obiektów Pythona. Jako sterownik bazy danych używam psycopg2 i do tej pory przekazywałem tylko łańcuchy python (nie obiekty-unicode) do bazy danych i pobierałem ciągi z bazy danych. Zasadniczo działało to dobrze, dopóki nie zdecydowałem, że String-handling będzie lepszy / poprawny i dodałem następującą konstrukcję do mojej warstwy DB:

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

To w zasadzie działa dobrze wszędzie w mojej aplikacji i używam obiektów unicode tam, gdzie to możliwe.

Ale w tym specjalnym przypadku z kolumną tekstową zawierającą marynowane obiekty sprawia kłopoty. W ten sposób działałem w moim systemie testowym:

pobieranie danych:SELECT data::bytea, params FROM mytablepisanie danych:execute("UPDATE mytable SET data=%s", (psycopg2.Binary(cPickle.dumps(x)),) )

... ale niestety otrzymuję błędy z SELECT dla niektórych kolumn w systemie produkcyjnym:

psycopg2.DataError: invalid input syntax for type bytea

Ten błąd występuje również, gdy próbuję uruchomić zapytanie w powłoce psql.

Zasadniczo zamierzam przekonwertować kolumnę z „tekstu” na „bytea”, ale powyższy błąd uniemożliwia mi także wykonanie tej konwersji.

O ile widzę, (przy pobieraniu kolumny jako czysty łańcuch pythona) w łańcuchu są tylko znaki z ord (c) <= 127.

questionAnswers(1)

yourAnswerToTheQuestion