python sqlite3使用詳解

Python SQLITE數據庫是一款很是小巧的嵌入式開源數據庫軟件,也就是說沒有獨立的維護進程,全部的維護都來自於程序自己。它使用一個文件存儲整個數據庫,操 做十分方便。它的最大優勢是使用方便,功能相比於其它大型數據庫來講,確實有些差距。可是性能表現上,SQLITE並不遜色。麻雀雖小,五臟俱全, sqlite 實現了多數 sql-92 的標準,好比說 transaction 、 trigger 和複雜的查詢等。python

python的數據庫模塊有統一的接口標準,因此數據庫操做都有統一的模式,基本上都是下面幾步(假設數據庫模塊名爲db):sql

1. 用db.connect建立數據庫鏈接,假設鏈接對象爲conn
2. 若是該數據庫操做不須要返回結果,就直接用conn.execute查詢,根據數據庫事務隔離級別的不一樣,可能修改數據庫須要conn.commit
3. 若是須要返回查詢結果則用conn.cursor建立遊標對象cur, 經過cur.execute查詢數據庫,用cur.fetchall/cur.fetchone/cur.fetchmany返回查詢結果。根據數據庫事 務隔離級別的不一樣,可能修改數據庫須要conn.commit
4. 關閉cur, conn
數據庫

下面讓咱們一步步走進Python中的SQLite吧。函數

一,Python SQLITE數據庫導入模塊:性能

import sqlite3 fetch

二,建立數據庫/打開數據庫:spa

cx = sqlite3.connect("E:/test.db") 其實咱們不須要顯式的建立一個sqlite數據庫,在調用connect函數的時候,指定庫名稱,若是指定的數據庫存在就直接打開這個數據庫,若是不存在就新建立一個再打開。這一點應用很好理解。設計

三,數據庫鏈接對象:sqlite

打開數據庫時返回的對象cx就是一個數據庫鏈接對象,它能夠有如下操做:對象

commit()--事務提交   rollback()--事務回滾   close()--關閉一個數據庫鏈接   cursor()--建立一個遊標

四,Python SQLITE數據庫遊標的使用:

遊標提供了一種對從表中檢索出的數據進行操做的靈活手段,就本質而言,遊標其實是一種能從包括多條數據記錄的結果集中每次提取一條記錄的機制。遊標老是與一條SQL  選擇語句相關聯。由於遊標由結果集(能夠是零條、一條或由相關的選擇語句檢索出的多條記錄)和結果集中指向特定記錄的遊標位置組成。當決定對結果集進行處理時,必須聲明一個指向該結果集的遊標。若是曾經用 C 語言寫過對文件進行處理的程序,那麼遊標就像您打開文件所獲得的文件句柄同樣,只要文件打開成功, 該文件句柄就可表明該文件。對於遊標而言,其道理是相同的。可見遊標可以實現按與傳統程序讀取平面文件相似的方式處理來自基礎表的結果集,從而把表中數據以平面文件的形式呈現給程序。
        咱們知道關係數據庫管理系統實質是面向集合的,在Sqlite中並無一種描述表中單一記錄的表達形式,除非使用where  子句來限制只有一條記錄被選中。所以咱們必須藉助於遊標來進行面向單條記錄的數據處理。 因而可知,遊標容許應用程序對查詢語句select  返回的行結果集中每一行進行相同或不一樣的操做,而不是一次對整個結果集進行同一種操做;它還提供對基於遊標位置而對錶中數據進行刪除或更新的能力;正是遊 標把做爲面向集合的數據庫管理系統和麪向行的程序設計二者聯繫起來,使兩個數據處理方式可以進行溝通。

下面着重闡述cursor遊標的使用。其實,全部sql語句的執行都要在遊標對象下進行。

首先,定義一個遊標:

cu = cx.cursor() 這樣定義了一個遊標。遊標對象有如下的操做:

execute()--執行sql語句   executemany--執行多條sql語句   close()--關閉遊標   fetchone()--從結果中取一條記錄,並將遊標指向下一條記錄   fetchmany()--從結果中取多條記錄   fetchall()--從結果中取出全部記錄   scroll()--遊標滾動 下面就使用Python SQLITE數據庫中游標對咱們上面創建的數據庫做一些操做吧:

1,建表:
cu.execute('create table catalog (id integer primary key,pid integer,name varchar(10) UNIQUE)') 上面語句建立了一個叫catalog的表,它有一個主鍵id,一個pid,和一個name,name是不能夠重複的。

2,插入數據:
cu.execute("insert into catalog values(0, 0, 'name1')")  cu.execute("insert into catalog values(1, 0, 'hello')") 簡單的插入兩行數據,不過須要提醒的是,只有提交了以後,才能生效.咱們使用數據庫鏈接對象cx來進行提交commit和回滾rollback操做.
cx.commit()

3,查詢:
cu.execute("select * from catalog") 要提取查詢到的數據,使用遊標的fetch***函數,如:
print cu.fetchall() 返回結果以下:
[(0, 0, u'name1'), (1, 0, u'hello')] 若是咱們使用cu.fetchone(),則首先返回列表中的第一項,再次使用,則返回第二項,依次下去.

4,修改:
cu.execute("update catalog set name='name2' where id = 0") 

cx.commit() 注意,修改數據之後提交

5,刪除:cu.execute("delete from catalog where id = 1")  cx.commit() 以上簡單的操做反應的Python SQLITE數據庫操做的基本要點,這裏點到爲止.而後,SQLite的強大,並不只限於此,其對SQL高級特性的支持及其小巧靈活的特色,使得 SQLite在衆多領域受到開發者的青睞.

相關文章
相關標籤/搜索