news 2026/4/20 1:07:53

如何在Python中正确使用MongoDB事务

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何在Python中正确使用MongoDB事务

MongoDB事务仅支持副本集或分片集群,单节点不支持;需显式传入session参数,超时60秒不可配置;writeConcern和readConcern需合理设置以保障一致性。事务只在副本集或分片集群上可用单节点 MongoDB 实例不支持事务,调用 start_transaction() 会直接报错 OperationFailure: Transactions are not supported on this deployment。这是最常卡住新手的第一步。本地开发时,别用 mongod --dbpath 启动单机版,改用 mongod --replSet rs0 并执行 rs.initiate()Docker 中快速起副本集:用官方镜像的 docker-compose.yml 示例,确保包含 replication.replSetName 配置云服务(如 MongoDB Atlas)默认开副本集,但免费共享层(M0)仍不支持事务——得升到 M10 或更高session 必须显式传入每个操作MongoDB Python 驱动不会自动把操作绑定到当前事务上下文,漏传 session 参数等于白开事务:所有写操作会立即提交,回滚完全失效。每次调用 insert_one()、update_one()、delete_many() 等方法时,必须加 session=session聚合管道中用 $out 或 $merge 写入数据时,同样要传 session;否则写入脱离事务控制读操作默认不参与事务隔离,如需读已写未提交数据,得设 read_concern=ReadConcern("local"),但通常没必要with client.start_session() as session: with session.start_transaction(): collection_a.insert_one({"x": 1}, session=session) # ? 正确 collection_b.update_one({"y": 2}, {"$set": {"z": 3}}, session=session) # ? 正确 collection_a.insert_one({"x": 2}) # ? 没传 session,立刻提交,事务无法回滚它事务有 60 秒超时且不可配置从 start_transaction() 开始计时,超时后服务端自动中止事务并释放锁。不是客户端异常,所以 try/except 捕获不到;表现常是后续操作卡住或报 InvalidSession。避免在事务里做 HTTP 请求、文件读写、长循环等阻塞操作批量操作尽量用 insert_many()、bulk_write() 替代多次单条调用,减少网络往返和时间消耗如果真需要长流程,拆成多个短事务,用业务逻辑保证最终一致性,而不是强依赖单事务writeConcern 影响事务可见性与持久性事务提交时的 writeConcern 决定“成功”意味着什么。默认 w=1(主节点写入即返回),但主节点宕机可能丢数据;设 w="majority" 才能保证多数节点落盘。 橙篇 百度文库发布的一款综合性AI创作工具

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 1:06:56

FastAPI零基础入门(纯知识点版)(附完整代码)

一、环境搭建1. 创建虚拟环境python -m venv venv2. 激活虚拟环境# Windows venv\Scripts\activate # Mac/Linux source venv/bin/activate3. 安装包pip install fastapi uvicorn二、第一个程序4. 创建main.pyfrom fastapi import FastAPIapp FastAPI()app.get("/")…

作者头像 李华
网站建设 2026/4/20 1:05:37

如何使用内联编辑修改数据_双击单元格快速更新法

原生HTML表格需手动绑定td的dblclick事件实现双击编辑,避免冒泡干扰;React中须用useEffect监听编辑态再聚焦,保存时防重复提交并比较新旧值,移动端应降级为点击编辑按钮。双击单元格触发编辑的 DOM 事件怎么监听原生 html 表格不支…

作者头像 李华
网站建设 2026/4/20 0:59:19

华为eNSP实战:跨VLAN场景下的DHCP中继配置详解

1. 跨VLAN通信与DHCP中继的核心价值 在企业网络环境中,VLAN技术就像给大楼划分不同楼层。想象一下,一栋写字楼里,10层是财务部,20层是市场部,两个部门需要物理隔离但又都要能访问公司的主服务器。这就是典型的跨VLAN通…

作者头像 李华
网站建设 2026/4/20 0:58:51

混沌工程:构建高可用系统的利器

混沌工程:构建高可用系统的利器 在数字化时代,系统的高可用性已成为企业核心竞争力的关键。随着系统架构的复杂化,传统的测试方法往往难以覆盖所有潜在故障场景。混沌工程应运而生,它通过主动注入故障来验证系统的韧性&#xff0…

作者头像 李华
网站建设 2026/4/20 0:56:53

别再只会用imshow了!Matlab图像显示从入门到进阶的5个实用技巧

别再只会用imshow了!Matlab图像显示从入门到进阶的5个实用技巧 当你第一次在Matlab中键入imshow命令时,那种瞬间将数据矩阵转化为可视化图像的魔力令人着迷。但很快你会发现,科研论文中的精美图像和工程报告中的专业图表,远不是简…

作者头像 李华