qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          python學(xué)習(xí)之sqlite and pysqllite

          本節(jié)通過SQLite了解數(shù)據(jù)庫操作

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

           

          數(shù)據(jù)庫支持

           

           

           

          使用簡單的純文本只能實現(xiàn)有退限的功能,所需要引入數(shù)據(jù)庫,完成更強大的功能,本節(jié)使用的簡單數(shù)據(jù)庫SQLite 。

           

          SQLite 和PySQLite

           

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

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

           

          python2.5版本這后,SQLite的優(yōu)勢在于它的一個包裝(PySQLite)已經(jīng)被包括在標準庫內(nèi),所以我們可以直接使用。

           

           

           

          入門操作

           

          可以將SQLite作為名為sqlite3的模塊導(dǎo)入。之后就可以創(chuàng)建一個到數(shù)據(jù)庫文件的連接----如果文件不存在就會被創(chuàng)建----通過提供一個文件名:

          復(fù)制代碼
          >>> import sqlite3 >>> conn = sqlite3.connect('somedatabase.db') # 創(chuàng)建數(shù)據(jù)庫 >>>cu = conn.cursor()   #能獲得連接的游標  #創(chuàng)建數(shù)據(jù)表 >>> cu.execute("""create table catalog (     id integer primary key,     pid integer,     name varchar(10) UNIQUE    )""") 
          #插入兩條數(shù)據(jù) >>> 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')]
          復(fù)制代碼

           

           

          連接

          為了使用基礎(chǔ)數(shù)據(jù)庫系統(tǒng),首先必須連接到它,這個時候需要使用具有名稱的connect函數(shù),該函數(shù)有多個參數(shù),而具體用哪個參數(shù)取決于數(shù)據(jù)庫。

          connect函數(shù)的常用參數(shù):

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

          連接對象方法:

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

           

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

           

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

           

           

          游標:

          cu = conn.cursor()

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

           

           conn.commit()  

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

           

           

          游標對象方法:

          游標對象特性:

           

          cu.fetchone()

           

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

           

          conn.close()

          可以在每次修改數(shù)據(jù)庫后都進行提交,而不是僅僅在準備關(guān)閉才提交,準備關(guān)閉數(shù)據(jù)時,使用close 方法。

           

           

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

          參考:

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

           

          SQLite轉(zhuǎn)碼問題:http://blog.sina.com.cn/s/blog_68013e850100w66d.html 

           

          posted on 2014-02-24 11:05 順其自然EVO 閱讀(196) 評論(0)  編輯  收藏 所屬分類: python

          <2025年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 旅游| 奉贤区| 隆化县| 顺义区| 调兵山市| 苗栗县| 汶上县| 江川县| 苍山县| 石家庄市| 新兴县| 金平| 普陀区| 馆陶县| 万年县| 屯昌县| 昭通市| 孝昌县| 习水县| 称多县| 香港 | 玛沁县| 宾阳县| 黄石市| 松阳县| 凤山市| 简阳市| 县级市| 延川县| 阳山县| 清河县| 文成县| 郯城县| 台中县| 临武县| 江山市| 兰州市| 烟台市| 辰溪县| 龙山县| 平塘县|