python進階學習筆記(三)


 

 本節通過SQLite了解數據庫操作

-------------------------

 

數據庫支持

 

 

 

使用簡單的純文本只能實現有退限的功能,所需要引入數據庫,完成更強大的功能,本節使用的簡單數據庫SQLite 

 

SQLite PySQLite

 

sqlite是非常著名的開源嵌入式數據庫軟件,它可以嵌入到其他程序中使用,並且提供SQL接口用來查詢,非常方便。它的官方站點為http://www.sqlite.org

 pysqlite 則是一個 sqlite 為 python 提供的 api 接口,它讓一切對於 sqlite 的操作都變得異常簡單

 

python2.5版本這后,SQLite的優勢在於它的一個包裝(PySQLite)已經被包括在標准庫內,所以我們可以直接使用。

 

 

 

入門操作

 

可以將SQLite作為名為sqlite3的模塊導入。之后就可以創建一個到數據庫文件的連接----如果文件不存在就會被創建----通過提供一個文件名:

>>> import sqlite3
>>> conn = sqlite3.connect('somedatabase.db') # 創建數據庫
>>>cu = conn.cursor()   #能獲得連接的游標

#創建數據表
>>> cu.execute("""create table catalog (
    id integer primary key,
    pid integer,
    name varchar(10) UNIQUE
   )""")

#插入兩條數據 >>> cu.execute("insert into catalog values(0,0,'name1')") >>> cu.execute("insert into catalog values(1,0,'name2')") >>> conn.commit()
#選擇(select) >>> cu.execute("select * from catalog") >>> cu.fetchall() [(0, 0, 'name1'), (1, 0, 'name2')] >>> cu.execute("select * from catalog where id = 1") >>> cu.fetchall() [(1, 0, 'name2')] #修改(update) >>> cu.execute(“update catalog set name=’name2′ where id = 0″)
>>> cx.commit()
>>> cu.execute(“select * from catalog”)
>>> cu.fetchone() (0, 0, ‘name2′)
#刪除(delete) >>> cu.execute(“delete from catalog where id = 1″)
>>> cx.commit()
>>> cu.execute(“select * from catalog”)
>>> cu.fetchall()
[(0, 0, 'name2')]

 

 

連接

為了使用基礎數據庫系統,首先必須連接到它,這個時候需要使用具有名稱的connect函數,該函數有多個參數,而具體用哪個參數取決於數據庫。

connect函數的常用參數:

connect函數返回連接對象。這個對象表示目前和數據庫的會話。連接對象支持的方法如下;

連接對象方法:

commit 方法總是可用的,但如果數據庫不支持事務,它就沒有任何作用。如果關閉了連接但還有未提交的事務,它們會隱式地回滾---但是只有在數據庫支持持回滾的時候才可以。

 

rollback 方法可能不可用,因為不是所有的數據庫都支持事務(事務是一系列動作)。如果可用,那么就可以“撤銷”所有未提交的事務。

 

cursor 方法將我們引入另外一個主題:游標對象。通過游標掃行SQL 查詢並檢查結果。游標連接支持更多的方法,而且可能在程序中更好用。

 

 

游標:

cu = conn.cursor()

能獲得連接的游標,這個游標可以用來執行SQL查詢。

 

 conn.commit()  

完成插入並且做出某些更改后確保已經進行了提交,這樣才可以將這些修改真正地保存到文件中。

 

 

游標對象方法:

游標對象特性:

 

cu.fetchone()

 

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

 

conn.close()

可以在每次修改數據庫后都進行提交,而不是僅僅在准備關閉才提交,准備關閉數據時,使用close 方法。

 

 

---------------

參考:

pysqlite 簡明教程http://blog.donews.com/limodou/archive/2004/07/05/37895.aspx

 

SQLite轉碼問題:http://blog.sina.com.cn/s/blog_68013e850100w66d.html 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM