ObjectId()打印字符串而不是Obj

2024-05-14 04:03:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将id字符串转换为ObjectId()

我有以下进口产品:

from pymongo import MongoClient
import pymongo
from bson.objectid import ObjectId

如果我打印:

^{pr2}$

我得到以下信息:

58a09f4255c205690833f9dd
58f7d1606cb710c54a14ae82

期望:

ObjectId("58a09f4255c205690833f9dd")
ObjectId("58f7d1606cb710c54a14ae82")

仅供参考:

pymongo==3.4.0
bson==0.4.7

我试过(运气不好):

import bson
print(bson.ObjectId(session['id']))
print(bson.ObjectId())

Tags: 字符串fromimport信息idsessionobjectidprint
2条回答

在直接从str转换为objectid之前,请尝试使用ObjectId.is_valid进行验证,if是{}返回{}的validate str,因此可以执行如下操作:

  if ObjectId(session['id']):
      try:
          id_object_valid = ObjectId(session['id'])
      except (InvalidId, TypeError):
          return False

实际上,您已经将您的id string转换为ObjectId。 由于print函数将您的ObjectId返回到string类型以正确打印,因此请尝试打印该类型,而不是打印值本身。在

var1 = ObjectId(session['id'])
var2 = ObjectId()

print(var1)
print(var2)
print(type(var1))
print(type(var2))

退货:

^{pr2}$

因此,您可以在要使用objectID的地方使用var1和{}。在

相关问题 更多 >