Python中使用SQLite的簡單教程

Python中使用SQLite的簡單教程

SQLite是一種嵌入式數(shù)據(jù)庫陶缺,它的數(shù)據(jù)庫就是一個文件跪但。由于SQLite本身是C寫的凉当,而且體積很小,所以嚷缭,經(jīng)常被集成到各種應(yīng)用程序中饮亏,甚至在iOS和Android的App中都可以集成。
Python就內(nèi)置了SQLite3,所以克滴,在Python中使用SQLite,不需要安裝任何東西优床,直接使用劝赔。
在使用SQLite前,我們先要搞清楚幾個概念:
表是數(shù)據(jù)庫中存放關(guān)系數(shù)據(jù)的集合胆敞,一個數(shù)據(jù)庫里面通常都包含多個表着帽,比如學(xué)生的表,班級的表移层,學(xué)校的表仍翰,等等。表和表之間通過外鍵關(guān)聯(lián)观话。
要操作關(guān)系數(shù)據(jù)庫予借,首先需要連接到數(shù)據(jù)庫,一個數(shù)據(jù)庫連接稱為Connection频蛔;
連接到數(shù)據(jù)庫后灵迫,需要打開游標(biāo),稱之為Cursor晦溪,通過Cursor執(zhí)行SQL語句瀑粥,然后,獲得執(zhí)行結(jié)果三圆。
Python定義了一套操作數(shù)據(jù)庫的API接口狞换,任何數(shù)據(jù)庫要連接到Python,只需要提供符合Python標(biāo)準(zhǔn)的數(shù)據(jù)庫驅(qū)動即可舟肉。
由于SQLite的驅(qū)動內(nèi)置在Python標(biāo)準(zhǔn)庫中修噪,所以我們可以直接來操作SQLite數(shù)據(jù)庫。
我們在Python交互式命令行實踐一下:

導(dǎo)入SQLite驅(qū)動:

>>> import sqlite3

連接到SQLite數(shù)據(jù)庫

數(shù)據(jù)庫文件是test.db

如果文件不存在路媚,會自動在當(dāng)前目錄創(chuàng)建:

>>> conn = sqlite3.connect('test.db')

創(chuàng)建一個Cursor:

>>> cursor = conn.cursor()

執(zhí)行一條SQL語句割按,創(chuàng)建user表:

>>> cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
<sqlite3.Cursor object at 0x10f8aa260>

繼續(xù)執(zhí)行一條SQL語句,插入一條記錄:

>>> cursor.execute('insert into user (id, name) values (\'1\', \'Michael\')')
<sqlite3.Cursor object at 0x10f8aa260>

通過rowcount獲得插入的行數(shù):

>>> cursor.rowcount
1

關(guān)閉Cursor:

>>> cursor.close()

提交事務(wù):

>>> conn.commit()

關(guān)閉Connection:

>>> conn.close()

我們再試試查詢記錄:

>>> conn = sqlite3.connect('test.db')
>>> cursor = conn.cursor()

執(zhí)行查詢語句:

>>> cursor.execute('select * from user where id=?', '1')
<sqlite3.Cursor object at 0x10f8aa340>

獲得查詢結(jié)果集:

>>> values = cursor.fetchall()
>>> values  [(u'1', u'Michael')]
>>> cursor.close()
>>> conn.close()

使用Python的DB-API時磷籍,只要搞清楚Connection和Cursor對象适荣,打開后一定記得關(guān)閉,就可以放心地使用院领。
使用Cursor對象執(zhí)行insert弛矛,update,delete語句時比然,執(zhí)行結(jié)果由rowcount返回影響的行數(shù)丈氓,就可以拿到執(zhí)行結(jié)果。
使用Cursor對象執(zhí)行select語句時,通過featchall()可以拿到結(jié)果集万俗。結(jié)果集是一個list湾笛,每個元素都是一個tuple,對應(yīng)一行記錄闰歪。
如果SQL語句帶有參數(shù)嚎研,那么需要把參數(shù)按照位置傳遞給execute()方法,有幾個?占位符就必須對應(yīng)幾個參數(shù)库倘,例如:

>>>cursor.execute('select * from user where id=?', '1')

SQLite支持常見的標(biāo)準(zhǔn)SQL語句以及幾種常見的數(shù)據(jù)類型临扮。具體文檔請參閱SQLite官方網(wǎng)站。

小結(jié)
在Python中操作數(shù)據(jù)庫時教翩,要先導(dǎo)入數(shù)據(jù)庫對應(yīng)的驅(qū)動杆勇,然后,通過Connection對象和Cursor對象操作數(shù)據(jù)饱亿。
要確保打開的Connection對象和Cursor對象都正確地被關(guān)閉蚜退,否則,資源就會泄露彪笼。
如何才能確保出錯的情況下也關(guān)閉掉Connection對象和Cursor對象呢关霸?請回憶try:...except:...finally:...的用法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末杰扫,一起剝皮案震驚了整個濱河市队寇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌章姓,老刑警劉巖佳遣,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異凡伊,居然都是意外死亡零渐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門系忙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诵盼,“玉大人,你說我怎么就攤上這事银还》缒” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵蛹疯,是天一觀的道長戒财。 經(jīng)常有香客問我,道長捺弦,這世上最難降的妖魔是什么饮寞? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任孝扛,我火速辦了婚禮,結(jié)果婚禮上幽崩,老公的妹妹穿的比我還像新娘苦始。我一直安慰自己,他們只是感情好慌申,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布陌选。 她就那樣靜靜地躺著,像睡著了一般太示。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上香浩,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天类缤,我揣著相機與錄音,去河邊找鬼邻吭。 笑死餐弱,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的囱晴。 我是一名探鬼主播膏蚓,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼畸写!你這毒婦竟也來了驮瞧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤枯芬,失蹤者是張志新(化名)和其女友劉穎论笔,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體千所,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡狂魔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了淫痰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片最楷。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖待错,靈堂內(nèi)的尸體忽然破棺而出籽孙,到底是詐尸還是另有隱情,我是刑警寧澤火俄,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布蚯撩,位于F島的核電站,受9級特大地震影響烛占,放射性物質(zhì)發(fā)生泄漏胎挎。R本人自食惡果不足惜沟启,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望犹菇。 院中可真熱鬧德迹,春花似錦、人聲如沸揭芍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽称杨。三九已至肌毅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間姑原,已是汗流浹背悬而。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锭汛,地道東北人笨奠。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像唤殴,于是被迫代替她去往敵國和親般婆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容