用Python進行SQLite數據庫操做

用Python進行SQLite數據庫操做

 -----轉自:http://www.cnblogs.com/yuxc/archive/2011/08/18/2143606.html

 

簡單的介紹html

      SQLite數據庫是一款很是小巧的嵌入式開源數據庫軟件,也就是說沒有獨立的維護進程,全部的維護都來自於程序自己。它是遵照ACID的關聯式數據庫管理系統,它的設計目標是嵌入式的,並且目前已經在不少嵌入式產品中使用了它,它佔用資源很是的低,在嵌入式設備中,可能只須要幾百K的內存就夠了。它可以支持Windows/Linux/Unix等等主流的操做系統,同時可以跟不少程序語言相結合,好比 Tcl、C#、PHP、Java等,還有ODBC接口,一樣比起Mysql、PostgreSQL這兩款開源世界著名的數據庫管理系統來說,它的處理速度比他們都快。SQLite第一個Alpha版本誕生於2000年5月. 至今已經有10個年頭,SQLite也迎來了一個版本 SQLite 3已經發布。sql

 

安裝與使用數據庫

 

 

1.導入 Python SQLITE數據庫模塊

     Python2.5以後,內置了SQLite3,成爲了內置模塊,這給咱們省了安裝的功夫,只需導入便可~函數

import sqlite3

 

2. 建立/打開數據庫 post

     在調用connect函數的時候,指定庫名稱,若是指定的數據庫存在就直接打開這個數據庫,若是不存在就新建立一個再打開。字體

cx = sqlite3.connect("E:/test.db")
     也能夠建立數據庫在內存中。
con = sqlite3.connect(":memory:")

 

3.數據庫鏈接對象fetch

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

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

    關於commit(),若是isolation_level隔離級別默認,那麼每次對數據庫的操做,都須要使用該命令,你也能夠設置isolation_level=None,這樣就變爲自動提交模式。編碼

 

4.使用遊標查詢數據庫 url

    咱們須要使用遊標對象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
複製代碼
相關文章
相關標籤/搜索