当前位置:首页>python>pymongo,一个成熟的 Python 库

pymongo,一个成熟的 Python 库

  • 2026-10-11 05:44:40
pymongo,一个成熟的 Python 库

大家好,我是木木。

今天给大家分享一个成熟的 Python 库,pymongo。

pymongo

pymongo 是 MongoDB 官方 Python 驱动,也是很多 MongoDB 上层封装的基础。它提供 MongoClient、集合操作、BSON 类型、批量写入、索引管理和连接池配置。对 Python 项目来说,PyMongo 的优势是直接、稳定、和 MongoDB 官方功能同步快;但也要求你理解文档模型、索引和连接超时,而不是把它当成普通 ORM。

项目地址:https://github.com/mongodb/mongo-python-driver

官方文档:https://www.mongodb.com/docs/languages/python/pymongo-driver/current/

三大特点

官方基础

MongoDB 官方驱动,覆盖同步、异步和 BSON 生态,是很多封装的底座。

文档直达

直接操作 database、collection 和文档,适合需要精细控制查询的项目。

批量完整

批量写入、索引和连接池配置都很成熟,适合生产服务。

最佳实践

安装方式:pip install pymongo。

第一段代码解决的问题是:创建 MongoClient 配置但不立即连接,适合启动时先检查默认库和超时参数。

importwarningswarnings.filterwarnings("ignore")fromimportlib.metadataimportversionfrompymongoimportMongoClientclient=MongoClient("mongodb://app:secret@db1.example.com:27017/shop?authSource=admin",connect=False,serverSelectionTimeoutMS=500,)print("package:",version("pymongo"))print("database:",client.get_default_database().name)print("nodes before connect:",sorted(client.nodes))print("timeout seconds:",client.options.server_selection_timeout)

第二段代码解决的问题是:MongoDB 文档里常见 ObjectId、Decimal128 等 BSON 类型,输出 JSON 时要用专门工具处理。

importwarningswarnings.filterwarnings("ignore")frombsonimportDecimal128,ObjectId,json_utildoc={"_id":ObjectId("656f1f77bcf86cd799439011"),"name":"Alice","balance":Decimal128("19.90"),"tags":["python","mongo"],}print(json_util.dumps(doc,ensure_ascii=False))

环境与版本信息

本文示例使用 Python 3.11,pymongo 4.17.0。示例使用 connect=False,只展示客户端配置、BSON 序列化和批量操作对象,不连接真实 MongoDB。

高级功能

进阶一点看批量写入和索引对象。先把操作对象准备好,再由 collection.bulk_write 或 create_indexes 执行。

importwarningswarnings.filterwarnings("ignore")frompymongoimportASCENDING,DESCENDING,IndexModel,UpdateOneops=[UpdateOne({"user":"alice"},{"$inc":{"points":3}},upsert=True),UpdateOne({"user":"bob"},{"$set":{"level":"pro"}},upsert=True),]index=IndexModel([("user",ASCENDING),("created_at",DESCENDING)],name="user_created_at",)print("bulk ops:",len(ops))print("op classes:",", ".join(op.__class__.__name__foropinops))print("index document:",index.document)

适用场景

适合 MongoDB 业务服务、数据同步脚本、日志文档存储、索引管理和需要直接控制查询语法的 Python 项目。

不适用场景

如果团队更需要 Django ORM 风格,可以考虑专门后端;如果数据强依赖复杂事务和 join,关系型数据库更自然。

上线检查

  1. 为所有高频查询建立并验证索引。
  2. 设置 serverSelectionTimeoutMS,避免故障时请求长期阻塞。
  3. 日志中不要输出包含账号密码的 MongoDB URI。

总结

pymongo 胜在直接和成熟。把连接、索引、BSON 类型和批量操作这些基本功打牢,它就是很可靠的 MongoDB 入口。

最新文章

随机文章