最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python sqlite3事務(wù)處理方法實例分析

 更新時間:2017年06月19日 10:42:13   作者:一花一世界,一葉一乾坤  
這篇文章主要介紹了Python sqlite3事務(wù)處理方法,結(jié)合具體實例形式分析了Python針對sqlite3事務(wù)處理的操作技巧,代碼中包含詳盡的注釋,需要的朋友可以參考下

本文實例講述了Python sqlite3事務(wù)處理方法。分享給大家供大家參考,具體如下:

sqlite3事務(wù)總結(jié):

在connect()中不傳入 isolation_level

事務(wù)處理:

使用connection.commit()

#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''sqlite3事務(wù)總結(jié):
在connect()中不傳入 isolation_level
事務(wù)處理:
  使用connection.commit()
分析:
  智能commit狀態(tài):
    生成方式: 在connect()中不傳入 isolation_level, 此時isolation_level==''
      在進行 執(zhí)行Data Modification Language (DML) 操作(INSERT/UPDATE/DELETE/REPLACE)時, 會自動打開一個事務(wù),
      在執(zhí)行 非DML, 非query (非 SELECT 和上面提到的)語句時, 會隱式執(zhí)行commit
      可以使用 connection.commit()方法來進行提交
    注意:
      不能和cur.execute("COMMIT")共用
  自動commit狀態(tài):
    生成方式: 在connect()中傳入 isolation_level=None
      這樣,在任何DML操作時,都會自動提交
    事務(wù)處理
      connection.execute("BEGIN TRANSACTION")
      connection.execute("COMMIT")
    如果不使用事務(wù), 批量添加數(shù)據(jù)非常緩慢
數(shù)據(jù)對比:
  兩種方式, 事務(wù)耗時差別不大
  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 sys
import time
class Elapse_time(object):
  '''耗時統(tǒng)計工具'''
  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_time
import 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 * num
def study_case1_intelligent_commit(count):
  '''
  在智能commit狀態(tài)下, 不能和cur.execute("COMMIT")共用
  '''
  connection, cursor = prepare()
  elapse_time = Elapse_time(' 智能commit')
  db_insert_values(cursor, count)
  #cursor.execute("COMMIT") #產(chǎn)生異常
  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;") # 關(guān)鍵點
  db_insert_values(cursor, count)
  connection.execute("COMMIT;") #關(guān)鍵點
  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) #不提交數(shù)據(jù)
    #study_case2_autocommit(count) #非常緩慢
    study_case3_intelligent_commit_manual(count)
    study_case4_autocommit_transaction(count)

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python常見數(shù)據(jù)庫操作技巧匯總》、《Python編碼操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

  • python 實現(xiàn)從高分辨圖像上摳取圖像塊

    python 實現(xiàn)從高分辨圖像上摳取圖像塊

    今天小編就為大家分享一篇python 實現(xiàn)從高分辨圖像上摳取圖像塊,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 詳解Python的三種拷貝方式

    詳解Python的三種拷貝方式

    Python中有三種拷貝方式分別是淺拷貝、深拷貝和賦值拷貝,這篇文章通過實例代碼給大家介紹了Python的三種拷貝方式,需要的朋友可以參考下
    2020-02-02
  • Python使用FastParquet庫處理Parquet文件的方法

    Python使用FastParquet庫處理Parquet文件的方法

    在大數(shù)據(jù)時代,數(shù)據(jù)存儲和處理的效率至關(guān)重要,Parquet作為一種列式存儲格式,因其高效的壓縮和編碼方案,成為大數(shù)據(jù)處理中的熱門選擇,本文將深入探討FastParquet庫的使用,幫助讀者掌握如何利用這一工具高效處理Parquet文件,需要的朋友可以參考下
    2025-02-02
  • Python模擬FTP文件服務(wù)器的操作方法

    Python模擬FTP文件服務(wù)器的操作方法

    這篇文章主要介紹了Python_模擬FTP文件服務(wù)器的操作方法,分為服務(wù)端和客戶端,要求可以有多個客戶端同時操作。本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-02-02
  • Manjaro、pip、conda更換國內(nèi)源的方法

    Manjaro、pip、conda更換國內(nèi)源的方法

    這篇文章主要介紹了Manjaro、pip、conda更換國內(nèi)源的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 手動實現(xiàn)把python項目發(fā)布為exe可執(zhí)行程序過程分享

    手動實現(xiàn)把python項目發(fā)布為exe可執(zhí)行程序過程分享

    這篇文章主要介紹了手動實現(xiàn)把python項目發(fā)布為exe可執(zhí)行程序過程分享,本文使用C語言實現(xiàn)了一個簡潔的Python打包程序,需要的朋友可以參考下
    2014-10-10
  • Python技法之如何用re模塊實現(xiàn)簡易tokenizer

    Python技法之如何用re模塊實現(xiàn)簡易tokenizer

    當我們在Python中開始新的東西時,我通常首先看一些模塊或庫來使用,下面這篇文章主要給大家介紹了關(guān)于Python技法之如何用re模塊實現(xiàn)簡易tokenizer的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • python 兩種方法修改文件的創(chuàng)建時間、修改時間、訪問時間

    python 兩種方法修改文件的創(chuàng)建時間、修改時間、訪問時間

    這篇文章主要介紹了python 如何修改文件的創(chuàng)建時間、修改時間、訪問時間的兩種方法,幫助大家更好的利用python處理文件,感興趣的朋友可以了解下
    2020-09-09
  • 深入理解Django的自定義過濾器

    深入理解Django的自定義過濾器

    這篇文章主要給大家介紹了關(guān)于Django自定義過濾器的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • Python面向?qū)ο笾畠?nèi)置函數(shù)相關(guān)知識總結(jié)

    Python面向?qū)ο笾畠?nèi)置函數(shù)相關(guān)知識總結(jié)

    本次要總結(jié)的的內(nèi)置函數(shù)共8個,他們都跟面向?qū)ο蟮闹R相關(guān),文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06

最新評論

丘北县| 乾安县| 巢湖市| 东平县| 祁门县| 布拖县| 江安县| 隆昌县| 宜兰县| 靖西县| 博野县| 乾安县| 沧州市| 小金县| 合江县| 赣州市| 阜新市| 武乡县| 忻城县| 游戏| 陆丰市| 安顺市| 富顺县| 汤原县| 贵德县| 泸水县| 宣恩县| 嘉义市| 辽宁省| 湖南省| 宝清县| 新乡县| 梁河县| 济宁市| 诏安县| 孟津县| 渝北区| 城口县| 永胜县| 凤山县| 连平县|