peewee ArrayField of UUIDS

1

Я пытаюсь манипулировать, используя peewee, таблицу, в которой есть столбец, содержащий массив uuids.

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

class test_db(BaseModel):
    arr = playhouse.postgres_ext.ArrayField(
        peewee.UUIDField,
        index_type=False
    )

Я хотел бы вставить запись в эту таблицу, и я использую следующий код:

arr = [uuid.UUID('d167169e-a017-4c17-8f3a-1dee98c1e563')]

x = test_db(arr=arr)
x.save()

Но я получил

peewee.ProgrammingError: can't adapt type 'UUID'

Я тоже пробовал этот

arr = ['d167169e-a017-4c17-8f3a-1dee98c1e563']

x = test_db(arr=arr)
x.save()

Но я получил следующую ошибку:

peewee.ProgrammingError: column "arr" is of type uuid[] but expression is of type text[]
LINE 1: INSERT INTO "test_db" ("arr") VALUES (ARRAY['d167169e-a017-4...
                                              ^
HINT:  You will need to rewrite or cast the expression.

Не могли бы вы помочь в решении этой проблемы?

Большое спасибо!

Теги:
peewee
uuid

1 ответ

0
Лучший ответ

Для этого вам необходимо зарегистрировать тип UUID:

import psycopg2.extras
psycopg2.extras.register_uuid()

С приведенным выше кодом вы сможете просто использовать:

arr = ArrayField(UUIDField, index=False)
  • 0
    Большое спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню