Python中sqlite3模塊 SQLite數(shù)據(jù)庫操作模塊sqlite3的CRUD指南

python中,使用sqlite3模塊進(jìn)行數(shù)據(jù)庫操作需遵循以下步驟:1.連接數(shù)據(jù)庫并創(chuàng)建表;2.插入數(shù)據(jù);3.查詢數(shù)據(jù);4.更新與刪除數(shù)據(jù);5.關(guān)閉連接。首先調(diào)用sqlite3.connect()連接數(shù)據(jù)庫,若文件不存在則自動創(chuàng)建;使用create table if not exists語句建表,注意主鍵設(shè)置和提交更改。插入數(shù)據(jù)時使用insert into語句結(jié)合問號占位符防止sql注入,可執(zhí)行單條或批量插入。查詢時可用select配合where條件篩選,通過fetchall()或fetchone()獲取結(jié)果。更新數(shù)據(jù)用update語句指定字段和條件,刪除數(shù)據(jù)用delete語句并謹(jǐn)慎操作。最后完成操作后應(yīng)關(guān)閉游標(biāo)和連接,同時注意性能優(yōu)化和事務(wù)控制。

python 中,sqlite3 模塊是標(biāo)準(zhǔn)庫自帶的一個輕量級數(shù)據(jù)庫模塊,適合小型項目或者本地開發(fā)使用。它支持完整的 SQL 語法,并且無需安裝額外的數(shù)據(jù)庫服務(wù)即可運行。本文將帶你一步步了解如何用 sqlite3 進(jìn)行常見的增刪改查(CRUD)操作。


連接數(shù)據(jù)庫與創(chuàng)建表

在進(jìn)行任何操作前,首先要連接到 SQLite 數(shù)據(jù)庫。如果文件不存在,sqlite3.connect() 會自動創(chuàng)建一個新文件。

import sqlite3  conn = sqlite3.connect('example.db') cursor = conn.cursor()

接著可以創(chuàng)建一張表,比如存儲用戶信息的 users 表:

cursor.execute('''     CREATE TABLE IF NOT EXISTS users (         id INTEGER PRIMARY KEY AUTOINCREMENT,         name TEXT NOT NULL,         age INTEGER     ) ''') conn.commit()
  • IF NOT EXISTS 是個好習(xí)慣,避免重復(fù)建表出錯。
  • AUTOINCREMENT 讓主鍵自動遞增。
  • 最后別忘了 commit() 提交更改。

插入數(shù)據(jù)(Create)

插入數(shù)據(jù)是 CRUD 的第一步。可以使用 INSERT INTO 語句完成。

立即學(xué)習(xí)Python免費學(xué)習(xí)筆記(深入)”;

cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("張三", 25)) conn.commit()
  • 使用問號占位符(?)可以防止 SQL 注入。
  • 如果一次插入多條記錄,可以用 executemany():
data = [("李四", 30), ("王五", 28)] cursor.executemany("INSERT INTO users (name, age) VALUES (?, ?)", data) conn.commit()

查詢數(shù)據(jù)(Read)

查詢是最常用的操作之一。基本的查詢方式如下:

cursor.execute("SELECT * FROM users") rows = cursor.fetchall()  for row in rows:     print(row)
  • fetchall() 獲取所有結(jié)果,也可以用 fetchone() 取一條。
  • 加條件篩選更常見,例如:
cursor.execute("SELECT * FROM users WHERE age > ?", (25,))

注意參數(shù)要寫成元組形式,即使只有一個值也得加逗號 (25,)。


更新與刪除數(shù)據(jù)(Update & Delete)

更新數(shù)據(jù)使用 UPDATE 語句:

cursor.execute("UPDATE users SET age = ? WHERE name = ?", (26, "張三")) conn.commit()

刪除數(shù)據(jù)則使用 DELETE:

cursor.execute("DELETE FROM users WHERE age < ?", (18,)) conn.commit()

?? 注意:

  • 更新和刪除操作一定要小心,最好先執(zhí)行 SELECT 確認(rèn)影響范圍。
  • 建議加上 WHERE 條件,否則可能誤刪整張表數(shù)據(jù)。

關(guān)閉連接與注意事項

操作完成后記得關(guān)閉游標(biāo)和連接:

cursor.close() conn.close()

一些小提示:

  • 在代碼中頻繁打開/關(guān)閉數(shù)據(jù)庫連接會影響性能,可考慮復(fù)用連接。
  • 如果要做事務(wù)控制,可以在操作前使用 BEGIN 或設(shè)置 isolation_level=None。
  • SQLite 支持大部分標(biāo)準(zhǔn) SQL 語法,但有些細(xì)節(jié)和 mysqlpostgresql 不一樣,要注意兼容性。

基本上就這些。掌握這幾種操作,你就可以用 Python 輕松處理本地數(shù)據(jù)了。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊13 分享