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表示。
在我的应用程序中,我使用 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表示。