一文搞懂Python中輕量型數(shù)據(jù)庫SQLite3的用法
1 引言
在進(jìn)行數(shù)據(jù)存儲和管理時(shí),我們常常需要一個(gè)輕量級而又功能強(qiáng)大的數(shù)據(jù)庫系統(tǒng)。SQLite 是一個(gè)極受歡迎的輕量級數(shù)據(jù)庫,它被廣泛應(yīng)用于各種大小的項(xiàng)目中。Python 自帶了對 SQLite 的支持,使得在 Python 中使用 SQLite 變得非常簡單和直觀。本文將詳細(xì)介紹 Python 中如何使用 SQLite3 庫進(jìn)行數(shù)據(jù)庫操作。
2 SQLite3 簡介
SQLite 是一個(gè)基于 C 語言的輕量級 SQL 數(shù)據(jù)庫引擎。它不需要獨(dú)立的服務(wù)器進(jìn)程,數(shù)據(jù)庫完整地存儲在一個(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 對象
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()
"""
控制臺輸出結(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è)簡單高效的方式來進(jìn)行數(shù)據(jù)庫操作,非常適合于輕量級應(yīng)用。Python 的 sqlite3 模塊使得在 Python 中操作 SQLite 數(shù)據(jù)庫變得輕而易舉。
到此這篇關(guān)于一文搞懂Python中輕量型數(shù)據(jù)庫SQLite3的用法的文章就介紹到這了,更多相關(guān)Python SQLite3內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
編寫Python腳本來獲取Google搜索結(jié)果的示例
這篇文章主要介紹了編寫Python腳本來獲取Google搜索結(jié)果的示例,也是利用Python編寫爬蟲的一個(gè)簡單實(shí)現(xiàn),需要的朋友可以參考下2015-05-05
python time.strptime格式化實(shí)例詳解
在本篇文章里小編給大家整理的是一篇關(guān)于python time.strptime格式化實(shí)例詳解內(nèi)容,對此有興趣的朋友們可以學(xué)習(xí)參考下。2021-02-02
Python標(biāo)準(zhǔn)庫calendar的使用方法
本文主要介紹了Python標(biāo)準(zhǔn)庫calendar的使用方法,calendar模塊主要由Calendar類與一些模塊方法構(gòu)成,Calendar類又衍生了一些子孫類來幫助我們實(shí)現(xiàn)一些特殊的功能,感興趣的可以了解一下2021-11-11
Python中一個(gè)for循環(huán)循環(huán)多個(gè)變量的示例
今天小編就為大家分享一篇Python中一個(gè)for循環(huán)循環(huán)多個(gè)變量的示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
python 進(jìn)階學(xué)習(xí)之python裝飾器小結(jié)
這篇文章主要介紹了python 進(jìn)階學(xué)習(xí)之python裝飾器小結(jié),本文通過場景分析給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
error?conda:ProxyError:Conda?cannot?proceed?due?to?an?
這篇文章主要為大家介紹了error conda:ProxyError:Conda cannot proceed due to an error in your proxy configuration解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07

