最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中如何使用sqlite3操作SQLite數據庫詳解

 更新時間:2025年03月14日 10:01:03   作者:莫比烏斯之夢  
這篇文章主要介紹了Python中SQLite數據庫的使用,包括連接數據庫、創(chuàng)建表、數據增刪改查、事務管理和參數化查詢等,并提供了操作示例,需要的朋友可以參考下

前言

在 Python 開發(fā)中,SQLite 是一種輕量級的關系型數據庫,它無需單獨安裝數據庫服務器,所有數據存儲在一個單獨的文件中,適用于小型應用、移動開發(fā)、數據分析等場景。Python 提供了內置的 sqlite3 模塊,方便我們操作 SQLite 數據庫。本文將詳細介紹 sqlite3 模塊的使用,包括數據庫連接、表操作、數據增刪改查(CRUD),以及常見的事務管理參數化查詢,幫助你快速掌握 Python 操作 SQLite 數據庫的方法。

1. 為什么選擇 SQLite?

零配置:Python 內置支持,無需安裝額外數據庫服務。

文件存儲:數據庫僅是一個 .db 文件,便于管理。

輕量高效:適用于小型應用、測試環(huán)境、移動端存儲。

SQL 支持:支持 SQL 語法,易于與其他數據庫遷移。

?? SQLite 適用場景

  • 桌面應用(如瀏覽器、記事本應用存儲用戶數據)。
  • 移動應用(Android、iOS 本地數據庫)。
  • 數據分析(存儲小型數據集,替代 CSV 文件)。

2. 連接 SQLite 數據庫

2.1 連接或創(chuàng)建數據庫

使用 sqlite3.connect() 連接數據庫:

import sqlite3

# 連接數據庫(如果不存在則創(chuàng)建)
conn = sqlite3.connect("example.db")

print("數據庫連接成功")

?? 特點

  • 如果 example.db 存在,則連接它,否則自動創(chuàng)建該文件。

2.2 獲取游標(Cursor)

數據庫操作需要使用 游標對象(cursor)

cursor = conn.cursor()

?? 作用

  • cursor.execute(sql) 用于執(zhí)行 SQL 語句。
  • cursor.fetchall() 獲取查詢結果。

3. 創(chuàng)建表(CREATE TABLE)

使用 CREATE TABLE 語句創(chuàng)建數據庫表:

cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        age INTEGER,
        city TEXT
    )
''')
conn.commit()  # 提交更改
print("表創(chuàng)建成功")

?? 解析

  • id INTEGER PRIMARY KEY AUTOINCREMENT:主鍵自增。
  • TEXT NOT NULLname 必須有值。
  • IF NOT EXISTS:避免重復創(chuàng)建表。

4. 插入數據(INSERT INTO)

4.1 插入單條數據

cursor.execute("INSERT INTO users (name, age, city) VALUES (?, ?, ?)",
               ("Alice", 25, "New York"))
conn.commit()
print("插入數據成功")

?? 注意

  • ? 占位符 避免 SQL 注入。
  • conn.commit() 提交事務,否則數據不會保存。

4.2 插入多條數據(executemany())

users = [
    ("Bob", 30, "San Francisco"),
    ("Charlie", 28, "Los Angeles"),
    ("David", 35, "Seattle")
]

cursor.executemany("INSERT INTO users (name, age, city) VALUES (?, ?, ?)", users)
conn.commit()
print("批量插入成功")

?? 適用于

  • 批量寫入數據,避免多次 execute() 提高效率。

5. 查詢數據(SELECT)

5.1 查詢所有數據

cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()

for row in rows:
    print(row)

?? fetchall() 獲取所有數據,返回列表

(1, 'Alice', 25, 'New York')
(2, 'Bob', 30, 'San Francisco')
(3, 'Charlie', 28, 'Los Angeles')

5.2 查詢單條數據(fetchone())

cursor.execute("SELECT * FROM users WHERE name = ?", ("Alice",))
user = cursor.fetchone()
print(user)

?? fetchone() 獲取單條數據,適用于查詢唯一記錄。

6. 更新數據(UPDATE)

cursor.execute("UPDATE users SET age = ? WHERE name = ?", (26, "Alice"))
conn.commit()
print("數據更新成功")

?? 確保

  • SET age = ? 只更新 age 列,避免誤修改其他數據。

7. 刪除數據(DELETE)

cursor.execute("DELETE FROM users WHERE name = ?", ("David",))
conn.commit()
print("數據刪除成功")

?? 務必小心

  • 沒有 WHERE 條件會刪除所有數據!
  • 先 SELECT 確認數據是否存在。

8. 事務管理(commit() 和 rollback())

8.1 commit() 提交事務

conn.commit()  # 確保數據寫入數據庫

?? 每次 INSERT、UPDATE、DELETE 后,都要 commit() 確保數據持久化。

8.2 rollback() 回滾事務

try:
    cursor.execute("UPDATE users SET age = ? WHERE name = ?", (100, "Charlie"))
    raise Exception("模擬異常")  # 模擬錯誤
    conn.commit()
except Exception as e:
    conn.rollback()  # 發(fā)生錯誤時回滾
    print("事務回滾:", e)

?? 作用

  • 如果操作失敗,回滾到上一次 commit(),防止錯誤影響數據庫。

9. 關閉數據庫連接

cursor.close()
conn.close()
print("數據庫連接已關閉")

?? 最佳實踐

  • 完成所有數據庫操作后,應關閉連接,釋放資源。

10. 結合 with 語句自動管理連接

Python 提供 with 語法,自動關閉數據庫連接

with sqlite3.connect("example.db") as conn:
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM users")
    print(cursor.fetchall())

?? 優(yōu)勢

  • 自動 commit()
  • 異常發(fā)生時自動 rollback()
  • 退出時自動關閉 conn

11. 使用 Row 以字典方式訪問數據

默認 fetchall() 返回元組

cursor.execute("SELECT * FROM users")
print(cursor.fetchone())  # (1, 'Alice', 25, 'New York')

可以改用 sqlite3.Row 使數據可用字典訪問

conn.row_factory = sqlite3.Row  # 設置行工廠
cursor = conn.cursor()

cursor.execute("SELECT * FROM users")
row = cursor.fetchone()
print(row["name"], row["age"])  # Alice 25

?? 適用于

  • 提高可讀性,避免 row[0] 這樣的索引訪問方式。

12. 結論

操作代碼示例
連接數據庫conn = sqlite3.connect("example.db")
創(chuàng)建表CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)
插入數據INSERT INTO users (name, age) VALUES (?, ?)
查詢數據SELECT * FROM users
更新數據UPDATE users SET age = ? WHERE name = ?
刪除數據DELETE FROM users WHERE name = ?
事務管理commit() / rollback()
關閉連接conn.close()

sqlite3 是 Python 內置的數據庫模塊,適用于小型應用、測試、數據存儲等場景。掌握這些操作,你就可以輕松管理 SQLite 數據庫,提升開發(fā)效率!

總結

到此這篇關于Python中如何使用sqlite3操作SQLite數據庫的文章就介紹到這了,更多相關Python sqlite3操作SQLite內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python程序打包工具py2exe和PyInstaller詳解

    Python程序打包工具py2exe和PyInstaller詳解

    這篇文章主要介紹了Python程序打包工具py2exe和PyInstaller詳解,如果可以提前將程序打包成 Windows平臺的 .exe 文件或者是Linux下的 .sh 腳本,那么使用起來就會方便很多,需要的朋友可以參考下
    2019-06-06
  • Python牛刀小試密碼爆破

    Python牛刀小試密碼爆破

    用Python與vbs分別實現的爆破bbs論壇賬號的代碼,學習python或vbs的朋友可以參考下。
    2011-02-02
  • python清除字符串中間空格的實例講解

    python清除字符串中間空格的實例講解

    今天小編就為大家分享一篇python清除字符串中間空格的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python練習之制作企業(yè)獎金計算器

    Python練習之制作企業(yè)獎金計算器

    在本篇博客中,我們將使用Python代碼解決一個企業(yè)獎金計算的問題,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-06-06
  • Django的數據模型訪問多對多鍵值的方法

    Django的數據模型訪問多對多鍵值的方法

    這篇文章主要介紹了Django的數據模型訪問多對多鍵值的方法,Django是Python豐富多彩的web框架中最具人氣的一個,需要的朋友可以參考下
    2015-07-07
  • NumPy雙曲函數與集合操作詳解

    NumPy雙曲函數與集合操作詳解

    NumPy?提供了?sinh()、cosh()?和?tanh()?等?ufunc,它們接受弧度值并生成相應的雙曲正弦、雙曲余弦和雙曲正切值,我們可以使用?NumPy?的?unique()?方法從任何數組中找到唯一元素,本文給大家詳細介紹了NumPy雙曲函數與集合操作,需要的朋友可以參考下
    2024-06-06
  • 使用 Supervisor 監(jiān)控 Python3 進程方式

    使用 Supervisor 監(jiān)控 Python3 進程方式

    今天小編就為大家分享一篇使用 Supervisor 監(jiān)控 Python3 進程方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 訊飛webapi語音識別接口調用示例代碼(python)

    訊飛webapi語音識別接口調用示例代碼(python)

    這篇文章主要介紹了如何使用Python3調用訊飛WebAPI語音識別接口,重點解決了在處理語音識別結果時判斷是否為最后一幀的問題,通過運行代碼并總結經驗,解決了常見的模塊和屬性錯誤,需要的朋友可以參考下
    2025-03-03
  • tensorflow中tf.reduce_mean函數的使用

    tensorflow中tf.reduce_mean函數的使用

    這篇文章主要介紹了tensorflow中tf.reduce_mean函數的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • 詳解python3 GUI刷屏器(附源碼)

    詳解python3 GUI刷屏器(附源碼)

    這篇文章主要介紹了詳解python3 GUI刷屏器(附源碼),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02

最新評論

吕梁市| 河南省| 南汇区| 阳原县| 盐源县| 扎赉特旗| 新郑市| 天峻县| 文山县| 泸水县| 绥德县| 大兴区| 奈曼旗| 鄯善县| 安龙县| 洪雅县| 赤壁市| 日土县| 富锦市| 五峰| 阿拉善盟| 高雄市| 旬邑县| 孙吴县| 揭东县| 珠海市| 交城县| 万盛区| 增城市| 彭山县| 北辰区| 万山特区| 鄂托克前旗| 庄河市| 剑川县| 泌阳县| 大埔区| 南召县| 满洲里市| 汝城县| 柞水县|