Python sqlite3事务处理方法实例分析

Python sqlite3事务处理方法实例分析,第1张

概述本文实例讲述了Pythonsqlite3事务处理方法。分享给大家供大家参考,具体如下:

本文实例讲述了Python sqlite3事务处理方法。分享给大家供大家参考,具体如下:

sqlite3事务总结:

在connect()中不传入 isolation_level

事务处理:

使用connection.commit()

#!/usr/bin/env python# -*- Coding:utf-8 -*-'''sqlite3事务总结:在connect()中不传入 isolation_level事务处理:  使用connection.commit()分析:  智能commit状态:    生成方式: 在connect()中不传入 isolation_level,此时isolation_level==''      在进行 执行Data Modification Language (DML)  *** 作(INSERT/UPDATE/DELETE/REPLACE)时,会自动打开一个事务,在执行 非DML,非query (非 SELECT 和上面提到的)语句时,会隐式执行commit      可以使用 connection.commit()方法来进行提交    注意:      不能和cur.execute("COMMIT")共用  自动commit状态:    生成方式: 在connect()中传入 isolation_level=None      这样,在任何DML *** 作时,都会自动提交    事务处理      connection.execute("BEGIN TRANSACTION")      connection.execute("COMMIT")    如果不使用事务,批量添加数据非常缓慢数据对比:  两种方式,事务耗时差别不大  count = 100000    智能commit即时提交耗时: 0.621    自动commit耗时: 0.601    智能commit即时提交耗时: 0.588    自动commit耗时: 0.581    智能commit即时提交耗时: 0.598    自动commit耗时: 0.588    智能commit即时提交耗时: 0.589    自动commit耗时: 0.602    智能commit即时提交耗时: 0.588    自动commit耗时: 0.622'''import sysimport timeclass Elapse_time(object):  '''耗时统计工具'''  def __init__(self,prompt=''):    self.prompt = prompt    self.start = time.time()  def __del__(self):    print('%s耗时: %.3f' % (self.prompt,time.time() - self.start))CElapseTime = Elapse_timeimport sqlite3# -------------------------------------------------------------------------------# 测试#filename = 'e:/temp/a.db'def prepare(isolation_level = ''):  connection = sqlite3.connect(filename,isolation_level = isolation_level)  connection.execute("create table IF NOT EXISTS people (num,age)")  connection.execute('delete from people')  connection.commit()  return connection,connection.cursor()def db_insert_values(cursor,count):  num = 1  age = 2 * num  while num <= count:    cursor.execute("insert into people values (?,?)",(num,age))    num += 1    age = 2 * numdef study_case1_intelligent_commit(count):  '''  在智能commit状态下,不能和cur.execute("COMMIT")共用  '''  connection,cursor = prepare()  elapse_time = Elapse_time(' 智能commit')  db_insert_values(cursor,count)  #cursor.execute("COMMIT") #产生异常  cursor.execute("select count(*) from people")  print (cursor.fetchone())def study_case2_autocommit(count):  connection,cursor = prepare(isolation_level = None)  elapse_time = Elapse_time(' 自动commit')  db_insert_values(cursor,count)  cursor.execute("select count(*) from people")  print (cursor.fetchone())def study_case3_intelligent_commit_manual(count):  connection,cursor = prepare()  elapse_time = Elapse_time(' 智能commit即时提交')  db_insert_values(cursor,count)  connection.commit()  cursor.execute("select count(*) from people")  print (cursor.fetchone())def study_case4_autocommit_transaction(count):  connection,cursor = prepare(isolation_level = None)  elapse_time = Elapse_time(' 自动commit')  connection.execute("BEGIN TRANSACTION;") # 关键点  db_insert_values(cursor,count)  connection.execute("COMMIT;") #关键点  cursor.execute("select count(*) from people;")  print (cursor.fetchone())if __name__ == '__main__':  count = 10000  prepare()  for i in range(5):    #study_case1_intelligent_commit(count) #不提交数据    #study_case2_autocommit(count) #非常缓慢    study_case3_intelligent_commit_manual(count)    study_case4_autocommit_transaction(count)

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python常见数据库 *** 作技巧汇总》、《Python编码 *** 作技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串 *** 作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录 *** 作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

总结

以上是内存溢出为你收集整理的Python sqlite3事务处理方法实例分析全部内容,希望文章能够帮你解决Python sqlite3事务处理方法实例分析所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1201876.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存