Python作為資料科學主流語言,被廣泛用於資料讀存、處理、分析、建模,可以說是無所不能。
資料一般存放在本地檔案或者資料庫裡,之前介紹過如何使用python讀取本地檔案,也對# PyMySQL、cx_Oracle等資料庫連線庫做過簡單的使用分享。
這次推薦一個python自帶的輕量級資料庫模組-sqlite3,先要弄清楚什麼是SQLite:
❝ SQLite是一種用C寫的小巧的嵌入式資料庫,它的資料庫就是一個檔案。SQLite 不需要一個單獨的伺服器程序或操作的系統,不需要配置,這意味著不需要安裝或管理,所有的維護都來自於SQLite 軟體本身。
❞
sqlite3模組不同於PyMySQL模組,PyMySQL是一個python與mysql的溝通管道,需要你在本地安裝配置好mysql才能使用,而SQLite是python自帶的資料庫,不需要任何配置,使用sqlite3模組就可以驅動它。
本文我們將進行連線 SQLite資料庫、建立表、插入資料、讀取資料、修改資料等操作。
1. 匯入sqlite3模組
sqlite3是內建模組,所以不需要安裝的,直接import匯入即可:
import
sqlite3
2. 建立與SQLite資料庫的連線
使用
sqlite3。connect()
函式連線資料庫,返回一個Connection物件,我們就是透過這個物件與資料庫進行互動。 資料庫檔案的格式是
filename。db
,如果該資料庫檔案不存在,那麼它會被自動建立。 該資料庫檔案是放在電腦硬盤裡的,你可以自定義路徑,後續操作產生的所有資料都會儲存在該檔案中。
# 建立與資料庫的連線
conn
=
sqlite3
。
connect
(
‘test。db’
)
還可以在記憶體中建立資料庫,只要輸入特殊引數值
:memory:
即可,該資料庫只存在於記憶體中,不會生成本地資料庫檔案。
conn
=
sqlite3
。
connect
(
‘:memory:’
)
建立與資料庫的連線後,需要建立一個遊標
cursor
物件,該物件的
。execute()
方法可以執行sql命令,讓我們能夠進行資料操作。
#建立一個遊標 cursor
cur
=
conn
。
cursor
()
3. 在SQLite資料庫中建立表
這裡就要執行sql的建表語句了,我們先建立一張如下的學生成績表-scores:
該表目前只有欄位名和資料型別,沒有資料,執行以下語句實現:
# 建表的sql語句
sql_text_1
=
‘’‘CREATE TABLE scores
(姓名 TEXT,
班級 TEXT,
性別 TEXT,
語文 NUMBER,
數學 NUMBER,
英語 NUMBER);’‘’
# 執行sql語句
cur
。
execute
(
sql_text_1
)
4. 向表中插入資料
建完表-scores之後,只有表的骨架,這時候需要向表中插入資料:
執行以下語句插入單條資料:
# 插入單條資料
sql_text_2
=
“INSERT INTO scores VALUES(‘A’, ‘一班’, ‘男’, 96, 94, 98)”
cur
。
execute
(
sql_text_2
)
執行以下語句插入多條資料:
data
=
[(
‘B’
,
‘一班’
,
‘女’
,
78
,
87
,
85
),
(
‘C’
,
‘一班’
,
‘男’
,
98
,
84
,
90
),
]
cur
。
executemany
(
‘INSERT INTO scores VALUES (?,?,?,?,?,?)’
,
data
)
# 連線完資料庫並不會自動提交,所以需要手動 commit 你的改動conn。commit()
5. 查詢資料
我們已經建好表,並且插入了三條資料,現在來查詢特定條件下的資料:
# 查詢數學成績大於90分的學生
sql_text_3
=
“SELECT * FROM scores WHERE 數學>90”
cur
。
execute
(
sql_text_3
)
# 獲取查詢結果
cur
。
fetchall
()
返回:
備註:獲取查詢結果一般可用
。fetchone()
方法(獲取第一條),或者用
。fetchall()
方法(獲取所有條)。
6. 其他操作
對資料庫做改動後(比如建表、插數等),都需要手動提交改動,否則無法將資料儲存到資料庫。
# 提交改動的方法
conn
。
commit
()
使用完資料庫之後,需要關閉遊標和連線:
# 關閉遊標
cur
。
close
()
# 關閉連線
conn
。
close
()
附連線connection和遊標cursor的API方法