python sqlite3事务_Python/SQLite3:无法提交-没有事务是acti
我试图使用Python(传统的,2.7)和SQLite(3)来编写book indexer。
代码可以归结为以下SQL语句序列:'select count(*) from tag_dict' ()
/* [(30,)] */
'select count(*) from file_meta' ()
/* [(63613,)] */
'begin transaction' ()
'select id from archive where name=?' ('158326-158457.zip',)
/* [(20,)] */
'select id from file where name=? and archive=?' ('158328.fb2', 20)
/* [(122707,)] */
'delete from file_meta where file=?' (122707,)
'commit transaction' ()
# error: cannot commit - no transaction is active
隔离级别是'DEFERRED'('EXCLUSIVE'没有更好的选择)。
我试图使用connection.commit()而不是cursor.execute('commit')-没有发生任何有用的事情。当然,我已经搜索过stackoverflow和Net,但是找到的答案是不相关的。
由于性能原因,自动提交模式不可接受。
我一次使用唯一的数据库文件。
我的代码是单线程运行的。
所有的SQL执行都是通过一个函数完成的,这个函数确保我一次只打开一个游标。
那么,这里的交易怎么了?
如果我使用connection.commit()(注意:没有connection.begin方法!),那么我只是丢失了数据。
当然,我已经对数据库文件及其目录的文件权限进行了double/triple/d检查。
好吧,我经常在提出问题后一分钟就找到了解决办法。
作为一个新手,我有8个小时不能回答自己的问题。。。
所以,答案就在这里:
解决方案是found here,由唯一的想法组成:
不要在Python应用程序的非自动提交模式下使用BEGIN/COMMIT-仅使用db.COMMIT()和db.rollback()!
这听起来很奇怪,但确实有效。
python sqlite3事务_Python/SQLite3:无法提交-没有事务是acti相关推荐
- Oracle数据库事务回滚和提交,数据库 事务提交和回滚
事务 - (transaction / tx) 原子性操作性(不可以分割的操作) - 要么全做, 要么全不做 事务的特点 - ACID 特性 A - atomicity 原子性 : 不可分割 ...
- mysql使用jdbc进行批量插入时把事务设为手动提交比事务自动提交速度快了10倍
第一次写博客,写的不好请多多包涵.欢迎评论 今天需要对mysql做一个批量插入的操作,使用的是原生的jdbc对mysql进行操作,大约插入20几万条数据,刚开始事务是自动提交的,插完数据大约用了4分钟 ...
- pythonsqlite事务_python sqlite3 的事务控制
Python sqlite3 的事务控制 官方文档的描述: Controlling Transactions By default, the sqlite3 module opens transact ...
- python mysql操作_Python的MySQL操作
Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库. Python DB-API使用流程: 引入API模块. 获取与数据库的连接. 执行SQL ...
- python sqlite3事务_python使用上下文管理器实现sqlite3事务机制
如题,本文记录如何使用python上下文管理器的方式管理sqlite3的句柄创建和释放以及事务机制. 1.python上下文管理(with) python上下文管理(context),解决的是这样一类 ...
- python开发sqlite3完整_python开发_sqlite3_绝对完整
#python sqlite #Author : Hongten #MailTo : [email protected] #QQ : 648719819 #Blog : http://ww ...
- 浅谈Python自带数据库SQLite3模块的使用(全面详细)
目录 写在前面 一:使用数据库的宏观过程 二:数据库使用 1.导入数据库模块 2.打开数据库 2.1.在硬盘上建立数据库 2.2.在内存上建立数据库 3.创建游标 4.执行SQL语句 4.1.创建表 ...
- python redis事务_python redis事务源码及应用分析
在多个客户端同时处理相同的数据时,不谨慎的操作很容易导致数据出错.一般的关系型数据库中有事务保证了数据操作的原子性,同样Redis中也设置了事务,可以理解为"将多个命令打包,然后一次性.按顺 ...
- python上的数据库sqlite3——插入多行数据
学校课程上的一个知识点,一个简单的课后习题:一劳永逸实现多行数据的插入(应该是这个意思,老师也没讲清楚).直接上代码了没啥好讲的,我感觉这个思路好捞. 1 import sqlite3 2 con = ...
最新文章
- 对象特性--构造函数调用规则
- 两种ICP的改进算法:PLICP与NICP
- 取消学术型硕士,增扩博士,北京大学这个学院做出研究生培养结构调整
- python基础教程第三版豆瓣-Python爬虫入门教程:豆瓣读书练手爬虫
- 2020年,产品经理如何提高求职成功率?
- vl02n 批次拆分
- nyoj 12(区间覆盖)
- Python Day11
- TCP/IP学习笔记(九)TCP报文段首部格式
- mysql数据表交叉引用_数据定义语句
- 计算机键盘标注,你所不知道的 Windows 10 小诀窍:万能计算器、虚拟键盘、屏幕截图标注...
- appweb ejs_具有快速路线的EJS
- 操作系统已经向SQL Server 返回了错误21
- Zookeeper学习笔记01
- listview 加载的时候报java.lang.IllegalArgumentException: column ‘_id’ does not exist 错误
- 【TensorFlow系列】【九】利用tf.py_func自定义算子
- java 生成拼音_java 根据汉字生成拼音全拼或拼音首字母
- 编译原理实验:miniC语言编译器
- dell笔记本安装win7.ios
- Chrome快捷键大全:Chrome窗口和标签页快捷键、功能快捷键、网页快捷键