python中sqlite的使用方法是什么

小編給大家分享一下python中sqlite的使用方法是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)建站主營(yíng)綏陽(yáng)網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app軟件開(kāi)發(fā),綏陽(yáng)h5微信小程序定制開(kāi)發(fā)搭建,綏陽(yáng)網(wǎng)站營(yíng)銷(xiāo)推廣歡迎綏陽(yáng)等地區(qū)企業(yè)咨詢

SQLite數(shù)據(jù)庫(kù)是一款非常小巧的嵌入式開(kāi)源數(shù)據(jù)庫(kù)軟件,也就是說(shuō)沒(méi)有獨(dú)立的維護(hù)進(jìn)程,所有的維護(hù)都來(lái)自于程序本身。它是遵守ACID的關(guān)聯(lián)式數(shù)據(jù)庫(kù)管理系統(tǒng),它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。

它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語(yǔ)言相結(jié)合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起MySQL、PostgreSQL這兩款開(kāi)源世界著名的數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)講,它的處理速度比他們都快。

SQLite第一個(gè)Alpha版本誕生于2000年5月. 至今已經(jīng)有10個(gè)年頭,SQLite也迎來(lái)了一個(gè)版本 SQLite 3已經(jīng)發(fā)布。

安裝與使用

一、導(dǎo)入Python SQLITE數(shù)據(jù)庫(kù)模塊

Python2.5之后,內(nèi)置了SQLite3,成為了內(nèi)置模塊,這給我們省了安裝的功夫,只需導(dǎo)入即可。

import sqlite3

二、創(chuàng)建/打開(kāi)數(shù)據(jù)庫(kù) 

在調(diào)用connect函數(shù)的時(shí)候,指定庫(kù)名稱(chēng),如果指定的數(shù)據(jù)庫(kù)存在就直接打開(kāi)這個(gè)數(shù)據(jù)庫(kù),如果不存在就新創(chuàng)建一個(gè)再打開(kāi)。

cx = sqlite3.connect("E:/test.db")

也可以創(chuàng)建數(shù)據(jù)庫(kù)在內(nèi)存中。

con = sqlite3.connect(":memory:")

三、數(shù)據(jù)庫(kù)連接對(duì)象

打開(kāi)數(shù)據(jù)庫(kù)時(shí)返回的對(duì)象cx就是一個(gè)數(shù)據(jù)庫(kù)連接對(duì)象,它可以有以下操作:

·commit()--事務(wù)提交   

·rollback()--事務(wù)回滾   

·close()--關(guān)閉一個(gè)數(shù)據(jù)庫(kù)連接   

·cursor()--創(chuàng)建一個(gè)游標(biāo)

關(guān)于commit(),如果isolation_level隔離級(jí)別默認(rèn),那么每次對(duì)數(shù)據(jù)庫(kù)的操作,都需要使用該命令,你也可以設(shè)置isolation_level=None,這樣就變?yōu)樽詣?dòng)提交模式。

四、使用游標(biāo)查詢數(shù)據(jù)庫(kù)

我們需要使用游標(biāo)對(duì)象SQL語(yǔ)句查詢數(shù)據(jù)庫(kù),獲得查詢對(duì)象。 通過(guò)以下方法來(lái)定義一個(gè)游標(biāo)。

cu=cx.cursor()

游標(biāo)對(duì)象有以下的操作:

·execute()--執(zhí)行sql語(yǔ)句   

·executemany--執(zhí)行多條sql語(yǔ)句   

·close()--關(guān)閉游標(biāo)   

·fetchone()--從結(jié)果中取一條記錄,并將游標(biāo)指向下一條記錄   

·fetchmany()--從結(jié)果中取多條記錄   

·fetchall()--從結(jié)果中取出所有記錄   

·scroll()--游標(biāo)滾動(dòng)  

1、建表

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

上面語(yǔ)句創(chuàng)建了一個(gè)叫catalog的表,它有一個(gè)主鍵id,一個(gè)pid,和一個(gè)name,name是不可以重復(fù)的,以及一個(gè)nickname默認(rèn)為NULL。

2、插入數(shù)據(jù) 

請(qǐng)注意避免以下寫(xiě)法:

# Never do this -- insecure 會(huì)導(dǎo)致注入攻擊
pid=200
c.execute("... where pid = '%s'" % pid)

正確的做法如下,如果t只是單個(gè)數(shù)值,也要采用t=(n,)的形式,因?yàn)樵M是不可變的。 

for t in[(0,10,'abc','Yu'),(1,20,'cba','Xu')]:
    cx.execute("insert into catalog values (?,?,?,?)", t)

簡(jiǎn)單的插入兩行數(shù)據(jù),不過(guò)需要提醒的是只有提交了之后,才能生效。我們使用數(shù)據(jù)庫(kù)連接對(duì)象cx來(lái)進(jìn)行提交commit和回滾rollback操作。

cx.commit()

3、查詢

cu.execute("select * from catalog")

要提取查詢到的數(shù)據(jù),使用游標(biāo)的fetch函數(shù),如:

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

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

4、修改

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

注意,修改數(shù)據(jù)以后提交。

5、刪除

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

6、使用中文

請(qǐng)先確定你的IDE或者系統(tǒng)默認(rèn)編碼是utf-8,并且在中文前加上u。

x=u'魚(yú)'
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')]

如果要顯示出中文字體,那需要依次打印出每個(gè)字符串。

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

7、Row類(lèi)型

Row提供了基于索引和基于名字大小寫(xiě)敏感的方式來(lái)訪問(wèn)列而幾乎沒(méi)有內(nèi)存開(kāi)銷(xiāo)。 

下面舉例說(shuō)明

In [30]: cx.row_factory = sqlite3.Row
In [31]: c = cx.cursor()
In [32]: c.execute('select * from catalog')
Out[32]: <sqlite3.Cursor object at 0x05666680>
In [33]: r = c.fetchone()
In [34]: type(r)
Out[34]: <type 'sqlite3.Row'>
In [35]: r
Out[35]: <sqlite3.Row object at 0x05348980>
In [36]: print r
(0, 10, u'\u9c7c', u'Yu')
In [37]: len(r)
Out[37]: 4
In [39]: r[2]            #使用索引查詢
Out[39]: u'\u9c7c'
In [41]: r.keys()
Out[41]: ['id', 'pid', 'name', 'nickname']
In [42]: for e in r:
   ....:     print e,
   ....: 
0 10 魚(yú) Yu

使用列的關(guān)鍵詞查詢

In [43]: r['id']
Out[43]: 0
In [44]: r['name']
Out[44]: u'\u9c7c'

以上是python中sqlite的使用方法是什么的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當(dāng)前題目:python中sqlite的使用方法是什么
網(wǎng)站路徑:http://bm7419.com/article24/jdshje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、微信小程序服務(wù)器托管、搜索引擎優(yōu)化、面包屑導(dǎo)航、用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)