2017-05-01 2 views
1

を適応させることはできません。次の表の定義と挿入がテーブルにUUIDを生成した - 私はそうのようなテーブル移入てるタイプのUUID

... 
time_id = uuid.uuid4() 
location_id = uuid.uuid4() 
id = row['id'] 

sql = ''' 
     INSERT INTO "my-schema"."example"(
      ... 
      time_id, 
      location_id 
      id 
     ) VALUES (..., %s, %s, %s) 
''' 
data = (..., time_id, location_id, id) 
try: 
    my_cursor.execute(sql, data) 
    my_conn.commit() 
except (psycopg2.Error) as e: 
    print(e) 

を:

CREATE TABLE "my-schema".example 
(
    ... 
    time_id character varying(50), 
    location_id character varying(50), 
    CONSTRAINT "PK_example" PRIMARY KEY (id) 
) 
WITH (
    OIDS=FALSE 
); 
ALTER TABLE "my-schema".example 
    OWNER TO postgres; 

しかし、これは私に次のようになりますエラー:can't adapt type 'UUID'。これの理由は何でしょうか? time_idlocation_idは、ディメンションとファクト表の間の外部キーとして機能するため、一意にする必要があります。

+1

UUIDデータ型を使用してUUIDを格納しない理由はありますか? https://www.postgresql.org/docs/9.1/static/datatype-uuid.html – Ivan

答えて

2

uuidは、文字列のように見える特定のタイプですが、そうではありません。それを文字フィールドに入れようとしています。最初に文字列に変換する必要があります:str(time_id), str(location_id)

+0

パーフェクト、時間制約が上がったときに回答を受け入れます。 – petermark

関連する問題