Python連接SQLite數(shù)據(jù)庫操作實戰(zhàn)指南從入門到精通
連接到SQLite數(shù)據(jù)庫
SQLite是一種嵌入式數(shù)據(jù)庫引擎,它允許在應用程序中創(chuàng)建和管理本地數(shù)據(jù)庫文件。
Python提供了sqlite3
模塊,可用于連接到SQLite數(shù)據(jù)庫。
import sqlite3 # 連接到數(shù)據(jù)庫(如果不存在則會創(chuàng)建) conn = sqlite3.connect('mydatabase.db')
上述代碼創(chuàng)建了一個名為mydatabase.db
的SQLite數(shù)據(jù)庫文件(如果該文件不存在),并與該數(shù)據(jù)庫建立連接??梢愿鶕?jù)需要更改數(shù)據(jù)庫文件的名稱。
創(chuàng)建表格
在SQLite數(shù)據(jù)庫中,數(shù)據(jù)以表格的形式存儲。要創(chuàng)建表格,使用SQL語句。
以下是一個示例,創(chuàng)建一個名為"students"的表格:
# 創(chuàng)建一個名為"students"的表格 cursor = conn.cursor() cursor.execute(''' CREATE TABLE IF NOT EXISTS students ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INTEGER ) ''') conn.commit()
上述代碼創(chuàng)建了一個包含id、name和age字段的"students"表格。cursor.execute()
用于執(zhí)行SQL語句,conn.commit()
用于提交更改。
插入數(shù)據(jù)
要向表格中插入數(shù)據(jù),使用INSERT INTO語句。
以下是一個插入數(shù)據(jù)的示例:
# 插入一名學生的信息 cursor.execute("INSERT INTO students (name, age) VALUES (?, ?)", ('Alice', 25)) conn.commit()
上述代碼將一名名為Alice的學生信息插入到"students"表格中。
查詢數(shù)據(jù)
使用SELECT語句,從表格中檢索數(shù)據(jù)。
以下是一個查詢數(shù)據(jù)的示例:
# 查詢所有學生的信息 cursor.execute("SELECT * FROM students") students = cursor.fetchall() for student in students: print(student)
上述代碼執(zhí)行SELECT語句并將結(jié)果存儲在students
變量中,然后通過循環(huán)打印每個學生的信息。
更新和刪除數(shù)據(jù)
更新數(shù)據(jù),使用UPDATE語句;
刪除數(shù)據(jù),使用DELETE語句。
以下是更新和刪除數(shù)據(jù)的示例:
# 更新學生信息 cursor.execute("UPDATE students SET age = ? WHERE name = ?", (26, 'Alice')) conn.commit() # 刪除學生信息 cursor.execute("DELETE FROM students WHERE name = ?", ('Alice',)) conn.commit()
上述代碼分別將學生Alice的年齡更新為26歲,并從表格中刪除了名為Alice的記錄。
異常處理
在進行數(shù)據(jù)庫操作時,務(wù)必使用異常處理來處理可能發(fā)生的錯誤。
例如,如果數(shù)據(jù)庫文件無法創(chuàng)建或打開,或者SQL語句執(zhí)行失敗,都應該處理這些異常情況。
try: conn = sqlite3.connect('mydatabase.db') # 數(shù)據(jù)庫操作 except sqlite3.Error as e: print("SQLite error:", e) finally: conn.close()
數(shù)據(jù)庫事務(wù)
SQLite支持事務(wù),這是一組數(shù)據(jù)庫操作的單元,要么全部成功,要么全部失敗。
使用commit()
提交事務(wù),使用rollback()
回滾事務(wù)。
# 開始一個事務(wù) conn = sqlite3.connect('mydatabase.db') cursor = conn.cursor() try: # 執(zhí)行一些數(shù)據(jù)庫操作 cursor.execute("INSERT INTO students (name, age) VALUES (?, ?)", ('Bob', 30)) cursor.execute("UPDATE students SET age = ? WHERE name = ?", (31, 'Bob')) # 提交事務(wù) conn.commit() except sqlite3.Error: # 發(fā)生錯誤,回滾事務(wù) conn.rollback() finally: conn.close()
數(shù)據(jù)庫索引
索引是數(shù)據(jù)庫中用于加速數(shù)據(jù)檢索的重要組成部分。在表格上創(chuàng)建索引以提高查詢性能。
# 在"students"表格的"name"字段上創(chuàng)建索引 cursor.execute("CREATE INDEX IF NOT EXISTS idx_name ON students (name)") conn.commit()
數(shù)據(jù)庫備份和恢復
定期備份數(shù)據(jù)庫以防止數(shù)據(jù)丟失是一個好習慣。通過復制數(shù)據(jù)庫文件來創(chuàng)建備份,或者使用SQLite的備份命令。
import shutil # 創(chuàng)建數(shù)據(jù)庫備份 shutil.copy2('mydatabase.db', 'mydatabase_backup.db')
安全性考慮
在將用戶提供的數(shù)據(jù)插入到數(shù)據(jù)庫之前,務(wù)必進行適當?shù)妮斎腧炞C和數(shù)據(jù)清理,以防止SQL注入攻擊。
user_input = input("Enter a student name: ") # 使用參數(shù)化查詢來避免SQL注入 cursor.execute("INSERT INTO students (name) VALUES (?)", (user_input,)) conn.commit()
總結(jié)
SQLite是一種輕量級的嵌入式數(shù)據(jù)庫引擎,適用于各種應用程序,從小型工具到大型數(shù)據(jù)驅(qū)動應用程序。SQLite是一個強大且靈活的數(shù)據(jù)庫引擎,對于許多應用程序都非常適用。
以上就是Python連接SQLite數(shù)據(jù)庫操作實戰(zhàn)指南從入門到精通的詳細內(nèi)容,更多關(guān)于Python SQLite數(shù)據(jù)庫操作的資料請關(guān)注腳本之家其它相關(guān)文章!
- Python使用Rich?type和TinyDB構(gòu)建聯(lián)系人通訊錄
- Python DBM模塊輕松使用小型數(shù)據(jù)庫存儲管理數(shù)據(jù)
- Python快速進修指南之向量數(shù)據(jù)庫文本搜索
- Python?SQLAlchemy與數(shù)據(jù)庫交互操作完整指南
- Python使用cx_Oracle庫連接Oracle數(shù)據(jù)庫指南
- python實現(xiàn)MySQL?數(shù)據(jù)庫表格創(chuàng)建?數(shù)據(jù)插入及獲取插入ID操作教程
- Python數(shù)據(jù)庫安裝及MySQL?Connector應用教程
- python TinyDB輕量級文檔導向數(shù)據(jù)庫輕松存儲訪問
相關(guān)文章
Python re.split方法分割字符串的實現(xiàn)示例
本文主要介紹了Python re.split方法分割字符串的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08Python微服務(wù)開發(fā)之使用FastAPI構(gòu)建高效API
微服務(wù)架構(gòu)在現(xiàn)代軟件開發(fā)中日益普及,它將復雜的應用程序拆分成多個可獨立部署的小型服務(wù)。本文將介紹如何使用 Python 的 FastAPI 庫快速構(gòu)建和部署微服務(wù),感興趣的可以了解一下2023-05-05python 連接各類主流數(shù)據(jù)庫的實例代碼
下面小編就為大家分享一篇python 連接各類主流數(shù)據(jù)庫的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01Python實戰(zhàn)之實現(xiàn)簡單的名片管理系統(tǒng)
這篇文章主要介紹了Python實戰(zhàn)之實現(xiàn)簡單的名片管理系統(tǒng),文中有非常詳細的代碼示例,對正在學習python的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04Python實現(xiàn)一個簡單三層神經(jīng)網(wǎng)絡(luò)的搭建及測試 代碼解析
一個完整的神經(jīng)網(wǎng)絡(luò)一般由三層構(gòu)成:輸入層,隱藏層(可以有多層)和輸出層。本文所構(gòu)建的神經(jīng)網(wǎng)絡(luò)隱藏層只有一層。一個神經(jīng)網(wǎng)絡(luò)主要由三部分構(gòu)成(代碼結(jié)構(gòu)上):初始化,訓練,和預測。,需要的朋友可以參考下面文章內(nèi)容的具體內(nèi)容2021-09-09pandas map(),apply(),applymap()區(qū)別解析
這篇文章主要介紹了pandas map(),apply(),applymap()區(qū)別解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-02-02