SQLite - Python:初學者指南
您好,未來的數據庫大師!我很興奮能夠成為您進入SQLite和Python世界的引路人。作為一個教導計算機科學多年的老師,我可以向您保證,在這個教程結束之後,您將能夠像專業人士一樣操作數據庫。那麼,我們來開始吧!
安裝
在我們開始這次冒險之前,我們需要確保我們有正確的工具。好消息是,如果您已經安裝了Python(我假設您已經安裝了),那麼您已經有了SQLite!它隨Python一起打包,所以不需要額外的安裝。這不是挺方便的嗎?
Python sqlite3 模塊 API
現在,讓我們來談談我們節目的明星:sqlite3模塊。這個模塊是您在Python中與SQLite數據庫工作的通行證。它提供了一套我們將在整個教程中使用的函數和方法。
這裡是我們將使用的主要方法的表格:
方法 | 描述 |
---|---|
connect() | 創建到數據庫的連接 |
cursor() | 創建一個游標對象以執行SQL命令 |
execute() | 執行一個SQL命令 |
executemany() | 對所有參數序列執行一個SQL命令 |
commit() | 提交當前的交易 |
rollback() | 從上次調用commit()以來對數據庫所做的任何更改進行回滾 |
close() | 關閉數據庫連接 |
現在這些可能看起來有點神秘,但隨著我們的進程,我們將詳細探索這些方法。
連接到數據庫
讓我們從連接到數據庫開始。這就像敲響您數據之家的門!
import sqlite3
# 連接到數據庫(如果不存在,則創建它)
conn = sqlite3.connect('my_first_db.db')
print("數據庫連接成功!")
# 完成後記得關閉連接
conn.close()
在這個例子中,我們導入了sqlite3模塊並使用其connect()
函數來創建到名為'my_first_db.db'的數據庫的連接。如果這個數據庫不存在,SQLite會為我們創建它。這真是太周到了!
創建表
現在,我們已經連接上了,讓我們創建一個表。把表想象成您數據庫中的一個工作表。
import sqlite3
conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()
# 創建一個表
cursor.execute('''CREATE TABLE IF NOT EXISTS students
(id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER)''')
print("表創建成功!")
conn.commit()
conn.close()
在這裡,我們創建了一個名為'students'的表,有三個列:id,name和age。IF NOT EXISTS
語句是我們的安全網——它防止我們不小心兩次創建同一個表時發生錯誤。
INSERT 操作
是時候給我們的表添加一些數據了。這就像填寫我們的工作表!
import sqlite3
conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()
# 插入一行數據
cursor.execute("INSERT INTO students (name, age) VALUES (?, ?)", ("Alice", 22))
# 插入多行數據
students_data = [("Bob", 19), ("Charlie", 21), ("David", 20)]
cursor.executemany("INSERT INTO students (name, age) VALUES (?, ?)", students_data)
print("數據插入成功!")
conn.commit()
conn.close()
在這個例子中,我們正在將數據插入我們的'students'表。我們使用execute()
進行單個插入,使用executemany()
進行多個插入。?
標記是數據的占位符,這有助於防止SQL注入攻擊。安全第一!
SELECT 操作
現在,讓我們來檢索我們的數據。這就像請求我們的數據庫展示它記住了什麼!
import sqlite3
conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()
# 從學生表中選擇所有行
cursor.execute("SELECT * FROM students")
# 獲取所有行
rows = cursor.fetchall()
for row in rows:
print(f"ID: {row[0]}, Name: {row[1]}, Age: {row[2]}")
conn.close()
在這裡,我們正在選擇我們'students'表中的所有行並將它們打印出來。我們SQL查詢中的*
表示"給我所有的東西"。這就像對您的數據庫說"打開芝麻門!"。
UPDATE 操作
有時候,我們需要改變我們的數據。讓我們更新一個學生的年齡:
import sqlite3
conn = sqlite3
Credits: Image by storyset