python連接sqlite3數(shù)據(jù)庫

關(guān)于sqlite

sqlite.jpg

SQLite是一個(gè)進(jìn)程庫呜达,實(shí)現(xiàn)了一個(gè)自包含的查近, 無服務(wù)器霜威, 零配置侥祭, 事務(wù)性的SQL數(shù)據(jù)庫引擎矮冬。SQLite的代碼屬于公共領(lǐng)域胎署,因此可以免費(fèi)用于任何商業(yè)或私人目的。SQLite是世界上部署最廣泛的數(shù)據(jù)庫恢筝。

SQLite是一個(gè)嵌入式SQL數(shù)據(jù)庫引擎撬槽。與大多數(shù)其他SQL數(shù)據(jù)庫不同侄柔,SQLite沒有單獨(dú)的服務(wù)器進(jìn)程暂题。SQLite直接讀寫普通磁盤文件薪者。具有多個(gè)表言津,索引纺念,觸發(fā)器和視圖的完整SQL數(shù)據(jù)庫包含在單個(gè)磁盤文件中陷谱。數(shù)據(jù)庫文件格式是跨平臺(tái)的 - 您可以在32位和64位系統(tǒng)之間或在big-endian和 little-endian 體系結(jié)構(gòu)之間自由復(fù)制數(shù)據(jù)庫 烟逊。這些功能使SQLite成為應(yīng)用程序文件格式的流行選擇宪躯。SQLite數(shù)據(jù)庫文件是美國國會(huì)圖書館推薦的存儲(chǔ)格式访雪。認(rèn)為SQLite不是Oracle的替代品,但作為fopen()的替代品坝橡。

SQLite是一個(gè)緊湊的庫计寇。啟用所有功能后番宁,庫大小可能小于600KiB赖阻,具體取決于目標(biāo)平臺(tái)和編譯器優(yōu)化設(shè)置政供。(64位代碼更大布隔。并且一些編譯器優(yōu)化衅檀,例如積極的函數(shù)內(nèi)聯(lián)和循環(huán)展開可能導(dǎo)致目標(biāo)代碼更大哀军。)在內(nèi)存使用和速度之間存在權(quán)衡杉适。SQLite通常運(yùn)行得越快猿推,你給它的內(nèi)存就越多蹬叭。然而,即使在低內(nèi)存環(huán)境中饥悴,性能通常也非常好。根據(jù)它的使用方式答朋,SQLite可以比直接文件系統(tǒng)I/O更快绿映。

sqlite3管理工具

圖形化管理工具可以讓你更好的學(xué)習(xí)叉弦、操縱淹冰、使用數(shù)據(jù)庫樱拴,windows系統(tǒng)下個(gè)人推薦使用免費(fèi)的SQLiteSpy工具。SQLiteSpy是SQLite的快速而緊湊的GUI數(shù)據(jù)庫管理器牺勾。 它讀取SQLite3文件并對(duì)它們執(zhí)行SQL。 其圖形用戶界面使探索驻民,分析和操作SQLite3數(shù)據(jù)庫變得非常容易回还,下載鏈接https://www.yunqa.de/delphi/products/sqlitespy/index裆泳。

download-SQLiteSpy.png

接下來演示基本的創(chuàng)建表、插入表柠硕、查詢表SQL工禾,如果你還不了解SQL語言,跟著練習(xí)可以有一個(gè)初步的了解仅叫,如果已經(jīng)很熟悉SQL了則可以跳過這部分帜篇。
下載解壓后打開SQLiteSpy.exe,選擇菜單項(xiàng)File>New Database..

01-create-database.png

選擇合適的目錄诫咱,輸入數(shù)據(jù)庫名(如demo)后點(diǎn)擊保存笙隙,完成后會(huì)發(fā)現(xiàn)main下type內(nèi)容已經(jīng)是剛剛創(chuàng)建的數(shù)據(jù)庫文件路徑,說明數(shù)據(jù)庫文件已經(jīng)連接成功坎缭。


02-save-datafile.png
03-已創(chuàng)建的數(shù)據(jù)庫.png
  1. 創(chuàng)建表
    創(chuàng)建了數(shù)據(jù)庫文件后就可以創(chuàng)建各種應(yīng)用所需的數(shù)據(jù)表了昧旨,創(chuàng)建表使用create語句级及。
--創(chuàng)建表sql  (--開頭的表示為注釋語句)
--demo: 創(chuàng)建的表名稱
--id:表列名县踢,INT為整型數(shù)據(jù)類型丙曙,not null表示該字段不能為空
--name:表列名索抓,varchar(20)為字符型數(shù)據(jù)類型篮幢,20為字符的長度限制
create table demo (id INT not null, name varchar(20));

右側(cè)上面的可輸入?yún)^(qū)域?yàn)閟ql語句輸入?yún)^(qū)域伴郁,輸入上面的sql狐胎,執(zhí)行Execute > Execute SQL菜單項(xiàng)(快捷鍵F9)镜粤,執(zhí)行成功后展開main可以看到成功創(chuàng)建一個(gè)名為demo的表带射。


01-create-table.png
  1. 插入表
    表已經(jīng)創(chuàng)建匣吊,但是目前表是空的蒜哀,沒有任何行數(shù)據(jù)寨典,需要向表中插入數(shù)據(jù)井氢,插入表使用insert語句。
--插入表sql
--demo:表名
--(id, name):表列名
--(1, 'richard'):分別對(duì)應(yīng)列表id, name,值類型必須和表定義中的類型匹配
insert into demo (id, name) values (1, 'richard');
insert into demo (id, name) values (2, 'bluce');
insert into demo (id, name) values (3, 'grace');
insert into demo (id, name) values (4, 'jhon');
insert into demo (id, name) values (5, 'nio');

在sql輸入?yún)^(qū)輸入以上sql向表中插入5條示例數(shù)據(jù)厌蔽,選中所有insert語句執(zhí)行菜單Execute > Execute SQl Selection(快捷鍵ctrl+F9摔癣,注意F9是執(zhí)行所有輸入的sql)戴卜,沒有彈出報(bào)錯(cuò)提示則表示語句執(zhí)行成功。


02-insert-rows.png
  1. 查詢表
    查詢表數(shù)據(jù)使用select語句。
--查詢表sql
select * from demo;  --查詢表demo的所有數(shù)據(jù)
select * from demo where name = 'nio';  --查詢demo表中name為nio的行數(shù)據(jù)
select name from demo where id=1; --查詢demo表中id為1的行的name字段的值

在sql輸入?yún)^(qū)輸入以上查詢sql债蓝,逐條選中Ctrl+F9執(zhí)行曲楚,查詢的結(jié)果將在右側(cè)下方查詢結(jié)果區(qū)域顯示厘唾。


03-select-tables.png

python連接sqlite3數(shù)據(jù)庫

本文通過python3進(jìn)行演示,首先你PC需要安裝python3的解釋器龙誊,python3編程環(huán)境的搭建可以參見我的另一篇文章python3編程環(huán)境搭建抚垃。

SQLite3已經(jīng)是python3的標(biāo)準(zhǔn)模塊,也就是說只要安裝了python你就擁有了SQLite數(shù)據(jù)庫趟大,只要導(dǎo)入sqlite3模塊你就可以開始創(chuàng)建數(shù)據(jù)庫等一系列數(shù)據(jù)庫操作了鹤树,使用python操作SQLite3數(shù)據(jù)庫的流程如下所示:

python-sqlite3數(shù)據(jù)庫API.png

游標(biāo)(Cursor)是處理數(shù)據(jù)的一種方法,為了查看或者處理結(jié)果集中的數(shù)據(jù)逊朽,游標(biāo)提供了在結(jié)果集中一次一行或者多行前進(jìn)或向后瀏覽數(shù)據(jù)的能力罕伯。可以把游標(biāo)當(dāng)作一個(gè)指針叽讳,它可以指定結(jié)果中的任何位置追他,然后允許用戶對(duì)指定位置的數(shù)據(jù)進(jìn)行處理。

仍然以上一節(jié)介紹的內(nèi)容為例岛蚤,通過python sqlite3 API來實(shí)現(xiàn)創(chuàng)建數(shù)據(jù)庫邑狸、創(chuàng)建表、插入表涤妒、查詢表等一系列操作(數(shù)據(jù)庫文件名為py_demo.db3)单雾。
新建文件py_sqlite3.py輸入以下代碼

# filename:py_sqlite3.py
# python3.7
import sqlite3

# 創(chuàng)建并連接數(shù)據(jù)庫py_demo.db
conn = sqlite3.connect("py_demo.db3")

# 創(chuàng)建游標(biāo)
cur = conn.cursor()

# 通過cur.execute執(zhí)行sql語句,操作數(shù)據(jù)庫
# 1.創(chuàng)建表demo
cur.execute("""
    create table demo (id INT not null, name varchar(20));
""")

# 2.插入數(shù)據(jù)到表demo
cur.execute("insert into demo (id, name) values (1, 'richard');")
cur.execute("insert into demo (id, name) values (2, 'bluce');")
cur.execute("insert into demo (id, name) values (3, 'grace');")
cur.execute("insert into demo (id, name) values (4, 'jhon');")
cur.execute("insert into demo (id, name) values (5, 'nio');")

# 3.查詢表
cur.execute("""
select * from demo;
""")
print(cur.fetchall())   # 打印所有的查詢的結(jié)果

# 提交修改
conn.commit()

# 關(guān)閉數(shù)據(jù)庫連接
conn.close()

打開終端cd到該py文件所在目錄,執(zhí)行命令python py_sqlite3.py硅堆,執(zhí)行結(jié)果如下:


python執(zhí)行結(jié)果.png

執(zhí)行完畢后屿储,檢查當(dāng)前目錄發(fā)現(xiàn)會(huì)生成一個(gè)py_demo.db3的數(shù)據(jù)庫文件,同樣可以使用工具SQLiteSpy打開該數(shù)據(jù)庫文件通過sql語句檢查是否創(chuàng)建了表并成功插入數(shù)據(jù)渐逃,方法同SQLiteSpy介紹章節(jié)够掠,這里不再贅述。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末朴乖,一起剝皮案震驚了整個(gè)濱河市祖屏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌买羞,老刑警劉巖袁勺,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異畜普,居然都是意外死亡期丰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門吃挑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钝荡,“玉大人,你說我怎么就攤上這事舶衬〔和ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵逛犹,是天一觀的道長端辱。 經(jīng)常有香客問我,道長虽画,這世上最難降的妖魔是什么舞蔽? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮码撰,結(jié)果婚禮上渗柿,老公的妹妹穿的比我還像新娘。我一直安慰自己脖岛,他們只是感情好朵栖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著柴梆,像睡著了一般混槐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上轩性,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼揣苏。 笑死悯嗓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的卸察。 我是一名探鬼主播脯厨,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼坑质!你這毒婦竟也來了合武?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤涡扼,失蹤者是張志新(化名)和其女友劉穎稼跳,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吃沪,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡汤善,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了票彪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片红淡。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖降铸,靈堂內(nèi)的尸體忽然破棺而出在旱,到底是詐尸還是另有隱情,我是刑警寧澤推掸,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布桶蝎,位于F島的核電站,受9級(jí)特大地震影響终佛,放射性物質(zhì)發(fā)生泄漏俊嗽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一铃彰、第九天 我趴在偏房一處隱蔽的房頂上張望绍豁。 院中可真熱鬧,春花似錦牙捉、人聲如沸竹揍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芬位。三九已至,卻和暖如春带到,著一層夾襖步出監(jiān)牢的瞬間昧碉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留被饿,地道東北人四康。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像狭握,于是被迫代替她去往敵國和親闪金。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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