用Python進行SQLite資料庫操作

來源:互聯網
上載者:User

標籤:

 

簡單的介紹

      SQLite資料庫是一款非常小巧的嵌入式開來源資料庫軟體,也就是說沒有獨立的維護進程,所有的維護都來自於程式本身。它是遵守ACID的關聯式資料庫管理系統,它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在嵌入式裝置中,可能只需要幾百K的記憶體就夠了。它能夠支援Windows/Linux/Unix等等主流的作業系統,同時能夠跟很多程式語言相結合,比如 Tcl、C#、PHP、Java等,還有ODBC介面,同樣比起Mysql、PostgreSQL這兩款開源世界著名的資料庫管理系統來講,它的處理速度比他們都快。SQLite第一個Alpha版本誕生於2000年5月. 至今已經有10個年頭,SQLite也迎來了一個版本 SQLite 3已經發布。

 

安裝與使用

 

 

1.匯入 Python SQLITE資料庫模組

     Python2.5之後,內建了SQLite3,成為了內建模組,這給我們省了安裝的功夫,只需匯入即可~

import sqlite3

 

2. 建立/開啟資料庫 

     在調用connect函數的時候,指定庫名稱,如果指定的資料庫存在就直接開啟這個資料庫,如果不存在就新建立一個再開啟。

cx = sqlite3.connect("E:/test.db")     也可以建立資料庫在記憶體中。con = sqlite3.connect(":memory:")

 

3.資料庫連接對象

    開啟資料庫時返回的對象cx就是一個資料庫連接對象,它可以有以下操作:

  1. commit()--事務提交   
  2. rollback()--交易回復   
  3. close()--關閉一個資料庫連接   
  4. cursor()--建立一個遊標

    關於commit(),如果isolation_level隔離等級預設,那麼每次對資料庫的操作,都需要使用該命令,你也可以設定isolation_level=None,這樣就變為自動認可模式。

 

4.使用遊標查詢資料庫 

    我們需要使用遊標對象SQL語句查詢資料庫,獲得查詢對象。 通過以下方法來定義一個遊標。

cu=cx.cursor()

 

     遊標對象有以下的操作:
  1. execute()--執行sql語句   
  2. executemany--執行多條sql語句   
  3. close()--關閉遊標   
  4. fetchone()--從結果中取一條記錄,並將遊標指向下一條記錄   
  5. fetchmany()--從結果中取多條記錄   
  6. fetchall()--從結果中取出所有記錄   
  7. scroll()--遊標滾動  

1. 建表

cu.execute("create table catalog (id integer primary key,pid integer,name varchar(10) UNIQUE,nickname text NULL)")

 

上面語句建立了一個叫catalog的表,它有一個主鍵id,一個pid,和一個name,name是不可以重複的,以及一個nickname預設為NULL。

 

2. 插入資料 

請注意避免以下寫法:

# Never do this -- insecure 會導致注入攻擊

pid=200
c.execute("... where pid = ‘%s‘" % pid)正確的做法如下,如果t只是單個數值,也要採用t=(n,)的形式,因為元組是不可變的。 
for t in[(0,10,‘abc‘,‘Yu‘),(1,20,‘cba‘,‘Xu‘)]:
    cx.execute("insert into catalog values (?,?,?,?)", t)簡單的插入兩行資料,不過需要提醒的是,只有提交了之後,才會生效.我們使用資料庫連接對象cx來進行提交commit和復原rollback操作.
cx.commit()

 

 

3.查詢

cu.execute("select * from catalog") 

要提取查詢到的資料,使用遊標的fetch函數,如:

In [10]: cu.fetchall()
Out[10]: [(0, 10, u‘abc‘, u‘Yu‘), (1, 20, u‘cba‘, u‘Xu‘)]

如果我們使用cu.fetchone(),則首先返回列表中的第一項,再次使用,則返回第二項,依次下去.

 

4.修改

In [12]: cu.execute("update catalog set name=‘Boy‘ where id = 0")
In [13]: cx.commit()

注意,修改資料以後提交

 

5.刪除

cu.execute("delete from catalog where id = 1")  
cx.commit() 

 

6.使用中文

請先確定你的IDE或者系統預設編碼是utf-8,並且在中文前加上u 

x=u‘魚‘
cu.execute("update catalog set name=? where id = 0",x)
cu.execute("select * from catalog")
cu.fetchall()
[(0, 10, u‘\u9c7c‘, u‘Yu‘), (1, 20, u‘cba‘, u‘Xu‘)]

如果要顯示出中文字型,那需要依次列印出每個字串

In [26]: for item in cu.fetchall():
   ....:     for element in item:
   ....:         print element,
   ....:     print
   ....: 
0 10 魚 Yu
1 20 cba Xu

用Python進行SQLite資料庫操作

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.