sqlite3 為聯繫 SQLite 的資料庫 (database) 模組 (module) ,基本使用順序為
- 用 connect() 函數建立跟資料庫檔案聯繫的 Connection 物件。
- 由 Connection 物件的 cursor() 方法建立 Cursor 物件。
- 利用 Cursor 物件的 execute() 方法進行資料庫操作。
- 利用 Connection 物件的 commit() 方法做資料庫檔案更新。
- 利用 Connection 物件的 close() 方法做關閉跟資料庫檔案的聯繫。
其中資料庫操作方面要用 SQL 語法,以下列舉一些常用的 SQL 語法,首先建立資料表,全大寫單字為 SQL 指令, name 為資料表名稱,而 field 為欄位名稱, type 為資料型態 (data type) 名稱
CREATE TABLE name (field1 type, field2 type, ...)
插入資料如下, value 為數值
INSERT INTO name VALUES (value1, value2, ...)
查詢資料如下, condition 為條件
SELECT field FROM name
SELECT field FROM name ORDER BY field
SELECT field FROM name WHERE condition
SELECT field FROM name BETWEEN field1 AND field2
SELECT field FROM name ORDER BY field
SELECT field FROM name WHERE condition
SELECT field FROM name BETWEEN field1 AND field2
查詢加計算資料如下, condition 為條件
SELECT AVG(field) FROM name
SELECT COUNT(field) FROM name
SELECT MAX(field) FROM name
SELECT MIN(field) FROM name
SELECT SUM(field) FROM name
SELECT COUNT(field) FROM name
SELECT MAX(field) FROM name
SELECT MIN(field) FROM name
SELECT SUM(field) FROM name
下表為 Python 的資料型態對應到 SQLite 的資料型態
Python type | SQLite type |
---|---|
None | NULL |
int | INTEGER |
float | REAL |
str | TEXT |
bytes | BLOB |
以下示範一個簡單的例子, sdemo01.py 用來建立資料表 contacts
import sqlite3
conn = sqlite3.connect('example.db')
c = conn.cursor()
c.execute("CREATE TABLE contacts (date text, name text, number text)")
conn.commit()
conn.close()
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:sdemo01.py
# 功能:示範 sqlite3 模組
# 作者:張凱慶
sdemo02.py 在 contacts 中插入三筆資料
import sqlite3
conn = sqlite3.connect('example.db')
c = conn.cursor()
c.execute("INSERT INTO contacts VALUES ('2018-03-11','王小寶','222')")
c.execute("INSERT INTO contacts VALUES ('2018-03-12','吳有明','321')")
c.execute("INSERT INTO contacts VALUES ('2018-03-15','白采君','320')")
conn.commit()
conn.close()
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:sdemo02.py
# 功能:示範 sqlite3 模組
# 作者:張凱慶
sdemo03.py 印出 contacts 中的資料,並以 number 欄位排序
import sqlite3
conn = sqlite3.connect('example.db')
c = conn.cursor()
for row in c.execute('SELECT * FROM contacts ORDER BY number'):
print(row)
conn.close()
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:sdemo03.py
# 功能:示範 sqlite3 模組
# 作者:張凱慶
於命令列依序執行以上程式
$ python3 sdemo01.py |
$ python3 sdemo02.py |
$ python3 sdemo03.py |
('2018-03-11', '王小寶', '222') |
('2018-03-15', '白采君', '320') |
('2018-03-12', '吳有明', '321') |
$ |
相關教學影片