在Python中使用UUID到NUUID

时间:2015-08-11 19:42:32

标签: pymongo uuid

在我的应用程序中,我使用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")})

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

1 个答案:

答案 0 :(得分:2)

假设您正在使用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表示。