一文搞懂Python中輕量型數(shù)據(jù)庫SQLite3的用法
1 引言
在進(jìn)行數(shù)據(jù)存儲(chǔ)和管理時(shí),我們常常需要一個(gè)輕量級(jí)而又功能強(qiáng)大的數(shù)據(jù)庫系統(tǒng)。SQLite 是一個(gè)極受歡迎的輕量級(jí)數(shù)據(jù)庫,它被廣泛應(yīng)用于各種大小的項(xiàng)目中。Python 自帶了對(duì) SQLite 的支持,使得在 Python 中使用 SQLite 變得非常簡(jiǎn)單和直觀。本文將詳細(xì)介紹 Python 中如何使用 SQLite3 庫進(jìn)行數(shù)據(jù)庫操作。
2 SQLite3 簡(jiǎn)介
SQLite 是一個(gè)基于 C 語言的輕量級(jí) SQL 數(shù)據(jù)庫引擎。它不需要獨(dú)立的服務(wù)器進(jìn)程,數(shù)據(jù)庫完整地存儲(chǔ)在一個(gè)磁盤文件中。Python 標(biāo)準(zhǔn)庫中的 sqlite3 模塊提供了一個(gè)與 SQLite 數(shù)據(jù)庫交互的接口。
3 基本步驟
使用 SQLite3 模塊主要包括以下幾個(gè)步驟:
- 連接數(shù)據(jù)庫
- 創(chuàng)建表
- 插入數(shù)據(jù)
- 查詢數(shù)據(jù)
- 更新/刪除數(shù)據(jù)
- 關(guān)閉數(shù)據(jù)庫連接
4 示例代碼
4.1 連接數(shù)據(jù)庫
import sqlite3
# 連接到數(shù)據(jù)庫(如果不存在,則創(chuàng)建)
conn = sqlite3.connect('example.db')
4.2 創(chuàng)建表
# 創(chuàng)建一個(gè) Cursor 對(duì)象
cursor = conn.cursor()
# 創(chuàng)建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users
(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')
4.3 插入數(shù)據(jù)
# 插入數(shù)據(jù)
cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")
cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")
# 提交事務(wù)
conn.commit()
4.4 查詢數(shù)據(jù)
# 查詢數(shù)據(jù)
cursor.execute("SELECT * FROM users")
print(cursor.fetchall())
4.5 更新/刪除數(shù)據(jù)
# 更新數(shù)據(jù)
cursor.execute("UPDATE users SET age = 31 WHERE name = 'Alice'")
# 刪除數(shù)據(jù)
cursor.execute("DELETE FROM users WHERE name = 'Bob'")
# 提交事務(wù)
conn.commit()
4.6 關(guān)閉數(shù)據(jù)庫連接
# 關(guān)閉 Cursor 和 Connection cursor.close() conn.close()
注意事項(xiàng)
- 異常處理:在進(jìn)行數(shù)據(jù)庫操作時(shí),使用
try...except語句處理異常是一個(gè)好習(xí)慣。 - 事務(wù)管理:使用
commit()來保存更改,使用rollback()來撤銷未提交的事務(wù)。 - 數(shù)據(jù)庫安全:避免 SQL 注入攻擊,最好使用參數(shù)化查詢。
5 實(shí)例演示
以下是一個(gè)使用 Python 中的 sqlite3 模塊來操作 SQLite 數(shù)據(jù)庫的完整示例。這個(gè)例子將展示如何連接到數(shù)據(jù)庫、創(chuàng)建表、插入、查詢、更新、刪除數(shù)據(jù),并最終關(guān)閉數(shù)據(jù)庫連接。我們將這些操作封裝在一個(gè)名為 sqlite_example.py 的 Python 文件中。
# sqlite_example.py
import sqlite3
def create_connection(db_file):
""" 創(chuàng)建數(shù)據(jù)庫連接 """
conn = None
try:
conn = sqlite3.connect(db_file)
return conn
except sqlite3.Error as e:
print(e)
return conn
def create_table(conn):
""" 創(chuàng)建表 """
try:
cursor = conn.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS users
(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')
except sqlite3.Error as e:
print(e)
def insert_user(conn, user):
""" 插入新用戶 """
try:
cursor = conn.cursor()
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", user)
conn.commit()
except sqlite3.Error as e:
print(e)
def update_user(conn, user):
""" 更新用戶信息 """
try:
cursor = conn.cursor()
cursor.execute("UPDATE users SET age = ? WHERE name = ?", user)
conn.commit()
except sqlite3.Error as e:
print(e)
def delete_user(conn, name):
""" 刪除用戶 """
try:
cursor = conn.cursor()
cursor.execute("DELETE FROM users WHERE name = ?", (name,))
conn.commit()
except sqlite3.Error as e:
print(e)
def select_all_users(conn):
""" 查詢所有用戶 """
try:
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
print(row)
except sqlite3.Error as e:
print(e)
def main():
database = "example.db"
# 創(chuàng)建數(shù)據(jù)庫連接
conn = create_connection(database)
# 創(chuàng)建表
if conn is not None:
create_table(conn)
# 插入數(shù)據(jù)
insert_user(conn, ('Alice', 30))
insert_user(conn, ('Bob', 25))
# 更新數(shù)據(jù)
update_user(conn, (35, 'Alice'))
# 查詢數(shù)據(jù)
print("查詢到的所有用戶:")
select_all_users(conn)
# 刪除數(shù)據(jù)
delete_user(conn, 'Bob')
# 再次查詢數(shù)據(jù)
print("\n刪除后的用戶數(shù)據(jù):")
select_all_users(conn)
# 關(guān)閉數(shù)據(jù)庫連接
conn.close()
else:
print("Error! 無法創(chuàng)建數(shù)據(jù)庫連接。")
if __name__ == '__main__':
main()
"""
控制臺(tái)輸出結(jié)果:
查詢到的所有用戶:
(1, 'Alice', 35)
(2, 'Alice', 35)
(3, 'Bob', 25)
刪除后的用戶數(shù)據(jù):
(1, 'Alice', 35)
(2, 'Alice', 35)
"""
在這個(gè)腳本中,我們定義了不同的函數(shù)來處理數(shù)據(jù)庫的創(chuàng)建連接、創(chuàng)建表、插入、更新、刪除和查詢操作。main 函數(shù)中整合了這些操作的流程。運(yùn)行這個(gè)腳本將在同目錄下創(chuàng)建一個(gè)名為 example.db 的 SQLite 數(shù)據(jù)庫文件,并在其中執(zhí)行了一系列的數(shù)據(jù)庫操作。
TIPS
可以通過數(shù)據(jù)庫瀏覽器查詢創(chuàng)建的數(shù)據(jù)庫,下載地址:DB Browser for SQLite官方下載鏈接

6 總結(jié)
SQLite3 提供了一個(gè)簡(jiǎn)單高效的方式來進(jìn)行數(shù)據(jù)庫操作,非常適合于輕量級(jí)應(yīng)用。Python 的 sqlite3 模塊使得在 Python 中操作 SQLite 數(shù)據(jù)庫變得輕而易舉。
到此這篇關(guān)于一文搞懂Python中輕量型數(shù)據(jù)庫SQLite3的用法的文章就介紹到這了,更多相關(guān)Python SQLite3內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pyenv uninstall刪除不需要的Python版本的詳細(xì)操作
文章介紹了如何使用pyenv和Miniconda來管理Python環(huán)境,特別是在清理不再需要的Python版本和環(huán)境時(shí)的實(shí)戰(zhàn)技巧,強(qiáng)調(diào)了pyenv作為Python版本管理器的優(yōu)勢(shì),感興趣的朋友跟隨小編一起看看吧2026-03-03
一文學(xué)會(huì)利用python解決文章付費(fèi)限制問題
本篇文章主要介紹利用Python爬蟲爬取付費(fèi)文章,適合練習(xí)爬蟲基礎(chǔ)同學(xué),文中描述和代碼示例很詳細(xì),干貨滿滿,感興趣的小伙伴快來一起學(xué)習(xí)吧2023-05-05
Python字符串中出現(xiàn)的次數(shù)統(tǒng)計(jì)多種方法
這篇文章主要介紹了Python字符串中出現(xiàn)的次數(shù)統(tǒng)計(jì)多種方法,使用內(nèi)置的count()方法、正則表達(dá)式、列表推導(dǎo)式、循環(huán)和條件判斷以及字符串分割,每種方法都有其適用的場(chǎng)景和優(yōu)缺點(diǎn),選擇合適的方法取決于具體的需求和場(chǎng)景,需要的朋友可以參考下2024-12-12
用python對(duì)excel進(jìn)行操作(讀,寫,修改)
這篇文章主要介紹了用python對(duì)excel進(jìn)行操作(讀,寫,修改),幫助大家更好的利用python處理表格,感興趣的朋友可以了解下2020-12-12
Python如何實(shí)現(xiàn)一個(gè)CLI命令行功能
Click是一個(gè)強(qiáng)大的Python庫,專門用于快速創(chuàng)建命令行界面,本文將詳細(xì)介紹Click庫的功能以及CLI的應(yīng)用場(chǎng)景,并通過具體代碼示例展示如何實(shí)現(xiàn)CLI,有需要的可以了解下2025-02-02
使用Django啟動(dòng)命令行及執(zhí)行腳本的方法
今天小編就為大家分享一篇使用Django啟動(dòng)命令行及執(zhí)行腳本的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05
Python面向?qū)ο笾甒eb靜態(tài)服務(wù)器
這篇文章主要為大家詳細(xì)介紹了Python面向?qū)ο笾甒eb靜態(tài)服務(wù)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09

