SQLite - Python:初學者指南

您好,未來的數據庫大師!我很興奮能夠成為您進入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