Skip to content

[Python] 使用 sqlite3 模組建立嵌入式資料庫

Last Updated on 2021-05-17 by Clay

SQLite 與一般 Server/Client 結構的資料庫不同, SQLite 被整合在應用程式當中,為一種嵌入式的資料庫,如果資料比較固定且數量不多,那麼使用 SQLite 可說是較為合適的。

今天要來紀錄的是,在 Python 當中我們要如何使用這種資料庫,如何使用簡單的 SQL 語法來進行以下指令的動作:

  • 建立 Create
  • 插入 Insert
  • 查詢 Select
  • 更新 Update
  • 刪除 Delete

如果想學習 SQL 的基本語法,可以參考我之前寫過的《MySQL 心得筆記 (1) —— SELECT, FROM, WHERE, GROUP-BY, HAVING, ORDER-BY, LIMIT》

如果想要看官方關於 sqlite3 這個 Package 的文件,可以參考: https://docs.python.org/3.6/library/sqlite3.html


連接資料庫

我們要在 Python 中使用 SQLite 這種資料庫的結構,就得使用 sqlite3 這個 package——所幸這個 package 在 Python 中是內建的,我們並不需要額外安裝。

首先,我們使用以下指令連接資料庫:

# -*- coding: utf-8 -*-
import sqlite3
db = sqlite3.connect('TEST.db')
cursor = db.cursor()
print('Connect ok')



Output:

Connect ok

如果這個資料庫並不存在,那麼會自動在當前專案目錄建立。


建立 Create

若我們已經連接上資料庫了,那麼首先也許我們得先建立一張『表』(Table)。

# Create table
cursor.execute(
'''CREATE TABLE HUMAN
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL);''')

print('Table created.')
db.commit()



Output:

Table created.

可以看到,我們建立起的表格名稱為 "HUMAN",有著以下欄位:

  • ID
  • NAME
  • AGE

插入 Insert

有了表格,接下來我們需要插入資料。

# Insert
cursor.execute('''INSERT INTO HUMAN (ID,NAME,AGE) VALUES (1, 'Clay', 25)''')
cursor.execute('''INSERT INTO HUMAN (ID,NAME,AGE) VALUES (2, 'Wendy', 16)''')

db.commit()
print('Insert ok')



Output:

Insert ok

這裡我們分別插入了兩筆資料,分別是 Clay 以及 Wendy。


查詢 Select

現在我們的表裡面已經有資料,現在就來簡單地進行『查詢』這個動作。

# Select
results = cursor.execute('''SELECT * FROM HUMAN''')
for item in results:
    print(item)



Output:

(1, 'Clay', 25)
(2, 'Wendy', 16)

可以看到我們剛插入的兩筆資料現在都顯示出來了。


更新 Update

如果我們已經建立好我們的資料了,這時候卻突然有了要更新資料的需求,那麼我們可以不用刪除舊有的資料重新插入,可以直接『更新』舊有的資料。

# Update
results = cursor.execute('''UPDATE HUMAN set AGE = 26 WHERE ID = 1''')
db.commit()


# Select
results = cursor.execute('''SELECT * FROM HUMAN''')
for item in results:
    print(item)



Output:

(1, 'Clay', 26)
(2, 'Wendy', 16)

我們可以看到,剛才還 25 歲的 Clay,現在已經變成 26 歲了。


刪除 Delete

若是我們要完全清除一筆資料,那麼我們該怎麼做呢?

# Delete
cursor.execute('''DELETE FROM HUMAN WHERE ID = 2''')
db.commit()


# Select
results = cursor.execute('''SELECT * FROM HUMAN''')
for item in results:
    print(item)



Output:

(1, 'Clay', 26)

我們可以透過這個指令,將 ID = 2 的資料刪除。


最後別忘了,要使用以下指令關閉資料庫哦!

db.close()




Leave a Reply