關(guān)于sqlite
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裆泳。
接下來演示基本的創(chuàng)建表、插入表柠硕、查詢表SQL工禾,如果你還不了解SQL語言,跟著練習(xí)可以有一個(gè)初步的了解仅叫,如果已經(jīng)很熟悉SQL了則可以跳過這部分帜篇。
下載解壓后打開SQLiteSpy.exe,選擇菜單項(xiàng)File>New Database..
選擇合適的目錄诫咱,輸入數(shù)據(jù)庫名(如demo)后點(diǎn)擊保存笙隙,完成后會(huì)發(fā)現(xiàn)main下type內(nèi)容已經(jīng)是剛剛創(chuàng)建的數(shù)據(jù)庫文件路徑,說明數(shù)據(jù)庫文件已經(jīng)連接成功坎缭。
- 創(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的表带射。
- 插入表
表已經(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í)行成功。
- 查詢表
查詢表數(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ū)域顯示厘唾。
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ù)庫的流程如下所示:
游標(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é)果如下:
執(zhí)行完畢后屿储,檢查當(dāng)前目錄發(fā)現(xiàn)會(huì)生成一個(gè)py_demo.db3的數(shù)據(jù)庫文件,同樣可以使用工具SQLiteSpy打開該數(shù)據(jù)庫文件通過sql語句檢查是否創(chuàng)建了表并成功插入數(shù)據(jù)渐逃,方法同SQLiteSpy介紹章節(jié)够掠,這里不再贅述。