高效管理資料是任何專案的關鍵部分,而 SQLite 讓這項任務變得簡單且輕量。在本教程中,我們將建立一個小型 Python 應用程式來管理圖書館資料庫,讓您可以輕鬆新增和檢索書籍。
讀完本文,您將了解如何:
讓我們先建立 SQLite 資料庫檔案並定義 books 表。每本書都有標題、作者、ISBN、出版日期和流派欄位。
import sqlite3 import os def create_library_database(): """Creates the library database if it doesn't already exist.""" db_name = "library.db" if not os.path.exists(db_name): print(f"Creating database: {db_name}") conn = sqlite3.connect(db_name) cursor = conn.cursor() cursor.execute(''' CREATE TABLE IF NOT EXISTS books ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, author TEXT, isbn TEXT UNIQUE, published_date DATE, genre TEXT ) ''') conn.commit() conn.close() else: print(f"Database already exists: {db_name}")
執行此函數來初始化資料庫:
create_library_database()
這將在您的專案目錄中建立一個library.db 文件,其中包含具有指定欄位的書籍表。
要插入書籍,我們希望確保避免重複條目(基於 isbn 欄位)。我們將使用 SQLite 的 INSERT OR IGNORE 語句,而不是手動檢查重複項。
這是添加書籍的功能:
def insert_book(book): """ Inserts a book into the database. If a book with the same ISBN already exists, the insertion is ignored. """ conn = sqlite3.connect("library.db") cursor = conn.cursor() try: # Insert the book. Ignore the insertion if the ISBN already exists. cursor.execute(''' INSERT OR IGNORE INTO books (title, author, isbn, published_date, genre) VALUES (?, ?, ?, ?, ?) ''', (book["title"], book["author"], book["isbn"], book["published_date"], book["genre"])) conn.commit() if cursor.rowcount == 0: print(f"The book with ISBN '{book['isbn']}' already exists in the database.") else: print(f"Book inserted: {book['title']} by {book['author']}") except sqlite3.Error as e: print(f"Database error: {e}") finally: conn.close()
此函數使用 INSERT OR IGNORE SQL 語句來確保有效地跳過重複條目。
讓我們透過在我們的圖書館中添加一些書籍來測試 insert_book 函數。
books = [ { "title": "To Kill a Mockingbird", "author": "Harper Lee", "isbn": "9780061120084", "published_date": "1960-07-11", "genre": "Fiction" }, { "title": "1984", "author": "George Orwell", "isbn": "9780451524935", "published_date": "1949-06-08", "genre": "Dystopian" }, { "title": "Pride and Prejudice", "author": "Jane Austen", "isbn": "9781503290563", "published_date": "1813-01-28", "genre": "Romance" } ] for book in books: insert_book(book)
當您執行上述程式碼時,書籍將會被加入資料庫。如果您再次運行它,您將看到類似以下的訊息:
The book with ISBN '9780061120084' already exists in the database. The book with ISBN '9780451524935' already exists in the database. The book with ISBN '9781503290563' already exists in the database.
您可以透過查詢資料庫輕鬆檢索資料。例如,要取得圖書館中的所有書籍:
def fetch_all_books(): conn = sqlite3.connect("library.db") cursor = conn.cursor() cursor.execute("SELECT * FROM books") rows = cursor.fetchall() conn.close() return rows books = fetch_all_books() for book in books: print(book)
只需幾行Python,您現在就擁有了一個功能齊全的圖書館管理器,可以插入書籍,同時防止重複並輕鬆檢索記錄。 SQLite 的 INSERT OR IGNORE 是一個強大的功能,可以簡化處理約束,使您的程式碼更加簡潔和高效。
隨意擴充此項目,具有以下功能:
接下來你會建造什麼? ?
以上是用 Python 建立一個簡單的 SQLite 庫管理器的詳細內容。更多資訊請關注PHP中文網其他相關文章!