当前位置: 首页 > news >正文

【python下用sqlite3, 多线程下报错,原因和解决 】

在python下用sqlite3, 多线程 在UPDATE 或者INSERT的时候, 会报错

sqlite3.OperationalError: cannot commit - no transaction is active

1. 原因

多线程写冲突

  • 非原子写操作:如果多个线程同时执行非原子写操作,可能会导致数据覆盖或不一致。

2. 解决方案

使用锁

使用锁来确保同一时间只有一个线程可以执行写操作。

import sqlite3
import threadinglock = threading.Lock()def worker(conn, thread_id):with lock:cursor = conn.cursor()cursor.execute("INSERT INTO test (id, value) VALUES (?, ?)", (thread_id, f"value_{thread_id}"))conn.commit()cursor.close()def main():conn = sqlite3.connect('example.db', check_same_thread=False)cursor = conn.cursor()cursor.execute("CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, value TEXT)")conn.commit()cursor.close()threads = []for i in range(5):thread = threading.Thread(target=worker, args=(conn, i))threads.append(thread)thread.start()for thread in threads:thread.join()conn.close()if __name__ == "__main__":main()

使用事务

显式事务管理:在每个线程中显式地开始和提交事务,确保事务的原子性和一致性。

import sqlite3
import threadingdef worker(conn, thread_id):cursor = conn.cursor()cursor.execute("BEGIN")cursor.execute("INSERT INTO test (id, value) VALUES (?, ?)", (thread_id, f"value_{thread_id}"))conn.commit()cursor.close()def main():conn = sqlite3.connect('example.db', check_same_thread=False)cursor = conn.cursor()cursor.execute("CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, value TEXT)")conn.commit()cursor.close()threads = []for i in range(5):thread = threading.Thread(target=worker, args=(conn, i))threads.append(thread)thread.start()for thread in threads:thread.join()conn.close()if __name__ == "__main__":main()

相关文章:

【python下用sqlite3, 多线程下报错,原因和解决 】

在python下用sqlite3, 多线程 在UPDATE 或者INSERT的时候, 会报错 sqlite3.OperationalError: cannot commit - no transaction is active 1. 原因 多线程写冲突 非原子写操作:如果多个线程同时执行非原子写操作,可能会导致数据覆盖或不一致。 2. 解…...

学习记录——day30 网络编程 端口号port 套接字socket TCP实现网络通信

目录 一、端口号 port 二、套接字 socket 1、原理 2、socket函数介绍 三、TCP实现网络通信 1、原理 2、TCP通信原理图 3、TCP相关函数 1)bind 绑定 2)listen 监听 3)accept 接收连接请求 4)recv 接收 5)sen…...

【DataKit系列】数据迁移-实例搭建步骤(二)

说明:此文档仅包含使用DataKit进行数据迁移时,搭建迁移任务相关教程,不包含一些必须的前置配置步骤,和环境要求等,请优先学习“【DataKit系列】数据迁移-使用说明(一)”文档。 数据迁移实例搭建…...

发送jsonp请求(前后端如何实现)

发送jsonp请求(前后端如何实现) 前端 $.ajax({url: /api/jsonp,type: get,data: { id: 123 }, // 参数dataType: jsonp,jsonp: cb, // 回调函数的参数名jsonpCallback: successfn,// 回调函数contentType: "application/json; charsetutf-8",success: function(resp…...

Leetcode—1239. 串联字符串的最大长度【中等】(unordered_set)

2024每日刷题&#xff08;155&#xff09; Leetcode—1239. 串联字符串的最大长度 实现代码 class Solution { public:bool charSet(string & s) {unordered_set<char> charSet(s.begin(), s.end());// true表示有重复// false表示唯一return s.size() ! charSet.s…...

Spring Boot 3.x Rest API统一异常处理最佳实践

上一篇&#xff1a;Spring Boot 3.x Rest API最佳实践之统一响应结构 下一篇&#xff1a;Spring Boot 3.x Web单元测试最佳实践 参考著作&#xff1a;Error Handling for REST with Spring 在Spring MVC应用中&#xff0c;要对web表示层所抛出的异常进行捕获处理有多种方式&…...

线程的进阶学习

线程结束方式: 1.pthread_exit //pthread_join 2.从线程执行函数中return //此时效果等价于pthread_exit 3.pthread_cancel //线程可以被取消 4.任何一个线程调用了exit 或者 主线程 (main函数) return都会造成 进程结束 线程资源回收 ---pthread_join int pthread_ca…...

13.1 Python 正则表达式基础

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、应用领域等内容。 ⭐…...

贪心算法介绍(Greedy Algorithm)

贪心算法介绍&#xff08;Greedy Algorithm&#xff09; 1. 贪心算法概念简介 ​ 贪心算法Greedy Algorithm是一种在每一步选择中都采取当前状态下最优&#xff08;或最有利&#xff09;决策的算法策略&#xff0c;以期望通过这样的局部最优决策达到全局最优解。它适用于那些…...

谷粒商城实战笔记-175~177-商城业务-检索服务-检索查询接口开发

文章目录 一&#xff0c;175-商城业务-检索服务-检索查询参数模型分析抽取二&#xff0c;176-商城业务-检索服务-检索返回结果模型分析抽取三&#xff0c;177-商城业务-检索服务-检索DSL测试-查询部分四&#xff0c;178-商城业务-检索服务-检索DSL测试-聚合部分问题记录解决方案…...

爬虫 Web Js 逆向:RPC 远程调用获取加密参数(1)WebSocket 协议介绍

RPC (Remote Procedure Call) 是远程调用的意思。 在 Js 逆向时&#xff0c;本地可以和浏览器以服务端和客户端的形式通过 WebSocket 协议进行 RPC 通信&#xff0c;这样可以直接调用浏览器中的一些函数方法&#xff0c;不必去在意函数具体的执行逻辑&#xff0c;可以省去大量…...

【安卓】WebView的用法与HTTP访问网络

文章目录 WebView的用法使用http访问网络使用HttpURLConnection使用OkHttp 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。 点击跳转到网站。 WebView的用法 新建一个WebViewTest项目&#xff0c;然后修…...

Mysql中文存入乱码???

问题描述 提示&#xff1a;用的mysql5.x版本&#xff1a; 例如&#xff1a;在新增数据的时候&#xff0c;数据库本应该保存中文的字段出现了乱码&#xff1f;&#xff1f;&#xff1f;&#xff1a; 原因分析&#xff1a; 提示&#xff1a;首先想到的是mysql的字符集设置&…...

安美数字酒店宽带运营系统 weather.php 任意文件读取漏洞复现

0x01 产品简介 HiBOS酒店宽带运营系统是由安美世纪(北京)科技有限公司开发的一套专为酒店设计的宽带管理系统。该系统旨在提升酒店宽带服务的运营效率和安全性&#xff0c;为酒店客人提供稳定、高速、便捷的上网体验。 0x02 漏洞概述 安美数字酒店宽带运营系统 weather.php …...

BGP的反射器(四)

解决IBGP全互联问题带来的问题&#xff1a; 路由器需维护大量的TCP和BGP连接&#xff0c;尤其在路由器数量较多时AS内BGP网络的可扩展性较差 角色 RR&#xff1a;路由反射器Client&#xff1a;RR的客户端Non-Client&#xff1a;非客户机 关系 Client只与RR之间建立IBGP会话…...

proxy负载均衡

endpoint &#xff1a; 终点、终端 看service服务器的ip kubectl get ep backend -> real server &#xff1a;真正提供web服务的服务器 负载均衡器 load balancer --》LB USER -->LB --->BACKEND(real server) nginx SERVICE --->很多的endpoint--》po…...

两个若依系统,不能同时登录问题解决方案

原因&#xff1a; 问题根源在于两个独立的系统&#xff08;A系统与B系统&#xff09;共享了同一cookie键名来存储各自用户的认证令牌&#xff08;token&#xff09;。这种设计导致了以下情形&#xff1a; 当用户在A系统登录后&#xff0c;一个token被存储在cookie中&#xff0…...

Unity Render Streaming项目实践经验

UnityRenderStreaming项目 项目github地址见上,我使用项目的3.1.0-exp.7版本、Unity 2023.1.0版本、windows11运行。 1下载项目包 2在Unity Hub中打开RenderStreaming~文件夹 3在package manager中导入com.unity.renderstreaming package 因为已经下载过了就选择install pa…...

Rvt/dgn格式的模型如何提取外轮廓,用于压平倾斜模型或者地形,进行BIM+GIS融合

0序 很多设计院、施工单位都需要做BIMGIS的融合&#xff0c;把设计成果或者施工方案和现状实景做叠加。 BIM作为设计模型和现状的实景是不吻合的&#xff0c;多数都需要在现状的基础上进行改造&#xff0c;穿过村落的桥梁&#xff0c;已有立交的跨域等。为了更好的展示设计方案…...

sqli-labs-master靶场通关

目录 一、sqli-labs第一关 1.判断是否存在sql注入 &#xff08;1&#xff09;提示输入数字值的ID作为参数&#xff0c;输入?id1 &#xff08;2&#xff09;通过数字值不同返回的内容也不同&#xff0c;所以我们输入的内容是带入到数据库里面查询了 &#xff08;3&#xff0…...

给黑帮写反侦测系统:他们在暗网给我立生祠

作为一名软件测试工程师&#xff0c;我从未想过&#xff0c;我的专业技能会让我卷入一场数字世界的道德深渊。故事始于一个匿名加密邮件&#xff0c;主题简洁却充满诱惑&#xff1a;“高薪项目&#xff1a;反侦测系统开发。”客户承诺丰厚报酬&#xff0c;并强调需要顶尖测试思…...

农业气象监测系统—实时感知・远程管控・智能预警

在农业现代化向纵深推进的当下&#xff0c;气象数据已成为农业生产的 “核心指挥棒”。烟台中盾信息科技有限公司&#xff08;下称 “烟台中盾科技”&#xff09;紧扣农业农村发展需求&#xff0c;以物联网、大数据技术为基石&#xff0c;打造农业气象监测系统&#xff0c;构建…...

Spring PetClinic实战解析:从单体应用到云原生部署的5大架构亮点

Spring PetClinic实战解析&#xff1a;从单体应用到云原生部署的5大架构亮点 【免费下载链接】spring-petclinic A sample Spring-based application 项目地址: https://gitcode.com/gh_mirrors/sp/spring-petclinic 你是否遇到过这样的困境&#xff1a;在学习Spring框架…...

IntelliJ IDEA终极教程:从零基础到高效开发的完整指南

IntelliJ IDEA终极教程&#xff1a;从零基础到高效开发的完整指南 【免费下载链接】IntelliJ-IDEA-Tutorial IntelliJ IDEA 简体中文专题教程 项目地址: https://gitcode.com/gh_mirrors/in/IntelliJ-IDEA-Tutorial IntelliJ IDEA 是目前所有 IDE 中最具备沉浸式的 JVM …...

JSON·学习笔记

“误报。我的安全阀一切正常。” “我们继续&#xff0c;今天我想解释一下什么是JSON。” “是啊&#xff0c;这个词我听过很多次了&#xff0c;什么意思&#xff1f;” “随着网络的发展&#xff0c;带有 JavaScript 的 HTML 页面开始主动与服务器通信并从服务器下载数据。为…...

20 分钟教你零基础部署 OpenClaw 到 Windows 电脑

1. OpenClaw 是什么&#xff1f; OpenClaw 是一款本地运行的 AI 自动化工具&#xff0c;你可以把它理解成一个 “能听懂自然语言的电脑助手”。 它不需要依赖云端服务&#xff0c;所有数据都存在你自己的电脑里&#xff0c;你只需要用中文 / 英文说一句话&#xff0c;它就能帮…...

告别DDA!用Python手撸Bresenham画线算法,从原理到实现(附完整源码)

告别DDA&#xff01;用Python手撸Bresenham画线算法&#xff0c;从原理到实现&#xff08;附完整源码&#xff09; 在计算机图形学领域&#xff0c;直线绘制是最基础却至关重要的操作。当你需要开发一个2D图形引擎、像素画工具或是任何需要精确控制像素显示的应用程序时&#x…...

**发散创新:用Python + ROS2实现多机器人协同路径规划与避障控制**在现代机器人系统中,**

发散创新&#xff1a;用Python ROS2实现多机器人协同路径规划与避障控制 在现代机器人系统中&#xff0c;多机器人协同控制已成为智能仓储、物流配送和工业自动化的核心技术之一。本文将带你深入一个真实可运行的案例——使用 Python 语言结合ROS2&#xff08;Robot Operating…...

基于vue+springboot框架的同城宠物照看数据可视化分析系统的设计与实现

目录技术选型与框架搭建核心功能模块设计开发阶段划分关键代码示例&#xff08;简化版&#xff09;测试与部署项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作技术选型与框架搭建 前端&#xff1a;Vue 3 TypeScript ECharts …...

CTFHub | 解密MySQL、Redis、MongoDB流量中的隐藏Flag

1. 数据库流量分析入门&#xff1a;为什么需要Wireshark&#xff1f; 当你参加CTF比赛时&#xff0c;经常会遇到需要从数据库流量中寻找Flag的题目。这类题目通常会给你一个抓包文件&#xff08;pcap格式&#xff09;&#xff0c;里面记录了MySQL、Redis或MongoDB等数据库的网络…...