1. 簡介
SQLite 是一種嵌入式關系型數(shù)據(jù)庫,,其本質就是一個文件,,它占用資源低、處理速度快,、跨平臺,、可與 Python、Java 等多種編程語言結合使用,。
SQLite 是一個進程內的庫,,可以自給自足、無服務器,、無需配置,、支持事務,Python 可以通過 sqlite3 模塊與 SQLite3 集成(3 是版本號),,Python 2.5.x 以上版本內置了 sqlite3 模塊,,我們可以直接使用。
2. 數(shù)據(jù)類型
2.1 存儲類型
存儲類型是數(shù)據(jù)保存成文件后的表現(xiàn)形式,,主要包括如下幾種:
類型 |
描述 |
NULL |
空值 |
REAL |
浮點數(shù)類型 |
TEXT |
字符串,,使用數(shù)據(jù)庫編碼(UTF-8,、UTF-16BE 或 UTF-16LE)存儲 |
BLOB |
二進制表示 |
INTEGER |
有符號的整數(shù)類型 |
2.2 親和類型
親和類型是數(shù)據(jù)庫表中列數(shù)據(jù)對應存儲類型的傾向性,當數(shù)據(jù)插入時,,字段的數(shù)據(jù)將會優(yōu)先采用親緣類型作為值的存儲方式,,主要包括如下幾種:
類型 |
描述 |
NONE |
不做任何轉換,直接以該數(shù)據(jù)所屬的數(shù)據(jù)類型進行存儲 |
TEXT |
該列使用存儲類型 NULL,、TEXT 或 BLOB 存儲數(shù)據(jù) |
NUMERIC |
該列可以包含使用所有五個存儲類型的值 |
REAL |
類似于 NUMERIC,,區(qū)別是它會強制把整數(shù)值轉換為浮點類型 |
INTEGER |
類似于 NUMERIC,,區(qū)別是在執(zhí)行 CAST 表達式時 |
2.3 聲明類型
聲明類型是我們寫 SQL 時字段定義的類型,,常用的聲明類型與親和類型具有如下對應關系:
聲明類型 |
親和類型 |
BLOB |
NONE |
DOUBLE、FLOAT |
REAL |
VARCHAR,、TEXT,、CLOB |
TEXT |
INT、INTEGER,、TINYINT,、BIGINT |
INTEGER |
DECIMAL、BOOLEAN,、DATE,、DATETIME |
NUMERIC |
3. 基本使用
3.1 連接數(shù)據(jù)庫
# 導入模塊
import sqlite3
# 連接數(shù)據(jù)庫
conn = sqlite3.connect('test.db')
數(shù)據(jù)庫不存在會被自動創(chuàng)建。
3.2 游標
連接數(shù)據(jù)庫后,,需要通過游標進行相應 SQL 操作,,所以要先創(chuàng)建游標。
# 創(chuàng)建游標
cs = conn.cursor()
3.3 建表
我們在 test.db 庫中新建一張表 person,。
# 創(chuàng)建表
cs.execute('''CREATE TABLE person
(id varchar(20) PRIMARY KEY,
name varchar(20));''')
# 關閉 cursor
cs.close()
# 提交當前事務
conn.commit()
# 關閉連接
conn.close()
3.4 新增
向表 person 中插入幾條數(shù)據(jù),。
# 導入模塊
import sqlite3
# 連接數(shù)據(jù)庫
conn = sqlite3.connect('test.db')
# 創(chuàng)建游標
cs = conn.cursor()
# 新增
cs.execute("INSERT INTO person (id, name) VALUES ('1', '張三')")
cs.execute("INSERT INTO person (id, name) VALUES ('2', '李四')")
cs.execute("INSERT INTO person (id, name) VALUES ('3', '王五')")
cs.execute("INSERT INTO person (id, name) VALUES ('4', '趙六')")
cs.execute("INSERT INTO person (id, name) VALUES ('5', '朱七')")
cs.close()
conn.commit()
conn.close()
3.5 刪除
刪除 person 表中 id 為 3 這條數(shù)據(jù)。
# 導入模塊
import sqlite3
# 連接數(shù)據(jù)庫
conn = sqlite3.connect('test.db')
# 創(chuàng)建游標
cs = conn.cursor()
# 刪除
cs.execute("DELETE FROM person WHERE id = '3'")
conn.commit()
cs.close()
conn.close()
3.6 修改
修改一下 person 表中 id 為 1 這條數(shù)據(jù)的 name 屬性值,。
# 導入模塊
import sqlite3
# 連接數(shù)據(jù)庫
conn = sqlite3.connect('test.db')
# 創(chuàng)建游標
cs = conn.cursor()
# 修改
cs.execute("UPDATE person set name = '張四' WHERE id = '1'")
conn.commit()
cs.close()
conn.close()
3.7 查詢
看一下查詢操作,。
# 導入模塊
import sqlite3
# 連接數(shù)據(jù)庫
conn = sqlite3.connect('test.db')
# 創(chuàng)建游標
cs = conn.cursor()
# 查詢
cs.execute("SELECT id, name FROM person")
# 獲取查詢結果集中的下一行
print(cs.fetchone())
# 獲取查詢結果集中的下幾行
print(cs.fetchmany(2))
# 獲取查詢結果集中剩下的所有行
print(cs.fetchall())
cs.close()
conn.close()
3.8 圖形化工具
我們可以通過 SQLite 圖形化工具 SQLiteStudio 更加直觀的查看其表結構、數(shù)據(jù)等,,下載地址為:https://github.com/pawelsalawa/sqlitestudio/releases,,進到下載頁面后根據(jù)自己的系統(tǒng)選擇下載版本,以 Windows 為例:選擇免安裝版 SQLiteStudio-3.2.1.zip ,,下載完畢后解壓,,再點擊 SQLiteStudio.exe 啟動。
啟動后依次點擊:Database,、Add a database,,彈出如下窗口:
我們點擊文件 下方右側的綠色加號或文件夾 按鈕,接著選擇 test.db 文件,,選完后點擊測試連接 按鈕,,如果連接正常,,再點擊 OK 按鈕,最后我們就可以通過 SQLiteStudio 對 test.db 進行直觀的查看了,。
|