Python 中的 UUID 到 NUUID

UUID to NUUID in Python

在我的应用程序中,我使用 PyMSSQL 从 MSSQL 获取一些值。 Python 将其中一个值解释为 UUID。我将这个值分配给一个名为 id 的变量。当我这样做时

print (type(id),id)

我明白了

<class 'uuid.UUID'> cc26ce03-b6cb-4a90-9d0b-395c313fc968

到目前为止一切都符合预期。现在,我需要使用此 ID 在 MongoDb 中进行查询。但是我在MongoDb中的字段类型是“.NET UUID(Legacy)”,也就是NUUID。但是当我用

查询时我没有得到任何结果
client.db.collectionname.find_one({"_id" : id})

这是因为我需要将UUID转换成NUUID。

注意:我也试过了

client.db.collectionname.find_one({"_id" : NUUID("cc26ce03-b6cb-4a90-9d0b-395c313fc968")})

但是没有用。有什么想法吗?

假设您使用的是 PyMongo 3.x:

from bson.binary import CSHARP_LEGACY
from bson.codec_options import CodecOptions
options = CodecOptions(uuid_representation=CSHARP_LEGACY)
coll = client.db.get_collection('collectionname', options)
coll.find_one({"_id": id})

如果您使用的是 PyMongo 2.x

from bson.binary import CSHARP_LEGACY
coll = client.db.collectionname
coll.uuid_subtype = CSHARP_LEGACY
coll.find_one({"_id": id})

你必须告诉PyMongo UUID最初是用什么格式存储的。还有一个JAVA_LEGACY表示。