1. 程式人生 > 資料庫 >Python操作Sqlite正確實現方法解析

Python操作Sqlite正確實現方法解析

Python程式語言的優點非常多,它的程式設計特色主要體現在可擴充性方面。那麼,在接下來的這篇文章中,我們將會為大家詳細介紹一下有關Python操作Sqlite 的相關應用技巧,希望可以給大家帶來些幫助。

一、安裝

去PySqlite主頁上下載安裝包,有windows的版本,現支援 Python 2.3和2.5版本。

二、建立資料庫/開啟資料庫

Python操作Sqlite使用檔案作為資料庫,你可以指定資料庫檔案的位置。

>>> import sqlite3

>>> cx = sqlite.connect("d:/test.db",encoding='cp936')

使 用sqlite的connect可以建立一個數據庫檔案,上面我指明瞭路徑。當資料庫檔案不存在的時候,它會自動建立。如果已經存在這個檔案,則開啟這個 檔案。encoding指明儲存資料所使用的編碼,這裡cp936是 Python 中自帶的編碼,其實就是GBK編碼。cx為資料庫連線物件。

三、操作資料庫的基本物件

3.1 資料庫連線物件

象前面的cx就是一個數據庫的連線物件,它可以有以下操作:

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

3.2 遊標物件

所有sql語句的執行都要在遊標物件下進行。

cu = cx.cursor()這樣定義了一個遊標。遊標物件有以下的操作:
execute()--執行sql語句
executemany--執行多條sql語句
close()--關閉遊標
fetchone()--從結果中取一條記錄
fetchmany()--從結果中取多條記錄
fetchall()--從結果中取出多條記錄
scroll()--遊標滾動

關於物件的方法可以去 Python 主頁上檢視DB API的詳細文件。不過PySqlite?到底支援DB API到什麼程式,我就不知道了。我列出的操作都是支援的,不過我不是都使用過。

四、使用舉例

4.1 建庫

前面已經有了,不再重複。(這些例子,如果你有興趣,可以直接在Python的互動環境下試試)

4.2 建表

>>> cu=cx.cursor() >>> cu.execute("""create table catalog
( id integer primary key,pid integer,name varchar(10) UNIQUE )""")

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

關於Python操作Sqlite支援的資料型別,在它主頁上面的文件中有描述,可以參考:Version 2 DataTypes?

4.3 insert(插入)

>>> cu.execute("insert into catalog values(0,'name1')")
>>> cu.execute("insert into catalog values(1,'hello')") >>> cx.commit()

如果你願意,你可以一直使用cu遊標物件。注意,對資料的修改必須要使用事務語句:commit()或rollback(),且物件是資料庫連線物件,這裡為cx。

4.4 select(選擇)

>>> cu.execute("select * from catalog") >>> cu.fetchall()
[(0,'name2'),(1,'hello')]fetchall()

返回結果集中的全部資料,結果為一個tuple的列表。每個tuple元素是按建表的欄位順序排列。注意,遊標是有狀態的,它可以記錄當前已經取到結果的 第幾個記錄了,因此,一般你只可以遍歷結果集一次。在上面的情況下,如果執行fetchone()會返回為空。這一點在測試時需要注意。

>>> cu.execute("select * from catalog where id = 1")
>>> cu.fetchone() (1,'hello')

對資料庫沒有修改的語句,執行後不需要再執行事務語句。

4.5 update(修改)

>>> cu.execute("update catalog set name='name2' where id = 0")
>>> cx.commit() >>> cu.execute("select * from catalog")
>>> cu.fetchone() (0,'name2')4.6 delete(刪除)
>>> cu.execute("delete from catalog where id = 1") >>> cx.commit()
>>> cu.execute("select * from catalog") >>> cu.fetchall() [(0,'name2')]

以上是關於如何使用Python操作Sqlite的簡單示例。