2013-03-08 170 views
0

我在Postgres的9.2以下類型:psycopg2枚舉類型

CREATE TYPE profile_categories AS ENUM 
(
    'particulier', 
    'professionel', 
    'assureur', 
    'manager' 
); 

所以我想將其註冊:

psycopg2.extras.register_composite('profile_categories', conn, globally=True)

但後來我得到一個錯誤:

psycopg2.ProgrammingError: PostgreSQL type 'profile_categories' not found

我所有的ENUM類型都未能正確註冊而其他類型的寄存器很好,例如:

CREATE TYPE _result AS 
(
    id     TEXT, 
    msg     TEXT 
); 

如何註冊ENUM類型?

回答

0

您的聲明失敗,因爲枚舉不是複合類型。我瀏覽了文檔,找不到與枚舉類型有關的任何內容。我可能會將其視爲文本和陷阱錯誤。

它看起來像註冊過程(從文檔)用於可能需要額外的處理,因此您可以處理點類型,幾何類型,元組類型等ENUM類型不需要處理時,從它們收到分貝,所以這是有道理的。

+1

這是正確的,直到您使用枚舉上面的數組。在這種情況下,psycopg2將數組作爲字符串文本而不是字符串列表返回。在這種情況下,必須使用自定義類型轉換:http://initd.org/psycopg/docs/extensions.html#database-types-casting-functions – JoshuaBoshi 2013-06-07 17:29:03