将生成的UUID插入表中 - 无法适应UUID类型

5

我正在进行如下方式的表格填充:

...
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;

然而,这给我带来了以下错误:无法适应类型 'UUID'。这是什么原因?我需要time_idlocation_id是唯一的,因为它们在维度表和事实表之间充当外键。

2
你为什么不使用UUID数据类型来存储UUID?https://www.postgresql.org/docs/9.1/static/datatype-uuid.html - Ivan
1个回答

6

uuid是一种特殊类型,看起来像字符串但实际上不是。你正在尝试将其放入字符字段中。你需要先将其转换为字符串:str(time_id),str(location_id)


完美,时间限制到期后将接受答案。 - petermark
1
有更好的方法:https://dev59.com/gVUK5IYBdhLWcg3w6zY8#59268003 - Andrey Semakin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接