【发布时间】:2018-06-29 15:31:18
【问题描述】:
我正在使用 psycopg2 尝试将条目插入到数据类型为 Postgres 类型“uuid”的表中。
根据this page,我应该可以直接使用Python类型uuid.UUID,如下代码:
uuid_entry = uuid.uuid4()
command = "INSERT INTO MyTable (uuid) VALUES (%s)"
cursor.execute(command, (uuid_entry,))
但是,当我尝试这样做时,它会抛出错误:
ProgrammingError(can't adapt type 'UUID')
关于为什么会发生这种情况的任何想法?谢谢。
【问题讨论】:
-
您是否能够在调试器中验证
uuid_entry?您是否能够成功地查询具有给定uuid和 initd.org/psycopg/docs/extras.html#adapt-uuid 的行? -
@ShawnMehan 嗯,似乎 psycopg2.extensions.adapt(my_uuid).getquoted() 的输出在我的情况下略有不同:b"'2d10d790-f2de-4de5-aaba-7095e04f39cb '::uuid"。它似乎被包裹在 b"..." 中。
-
b告诉您它是binary string。但是您应该尝试从您的数据库中获取另一个 id 并提取该 id 并将其类型和格式与您正在制作的进行比较。确保它们在 python 中的外观相似。 -
@ShawnMehan 似乎我能够在调用
cursor.execute之前使用psycopg2.extras.register_uuid()解决问题。
标签: python-3.x uuid psycopg2