首頁 > 後端開發 > Python教學 > 用 Python 建立一個簡單的 SQLite 庫管理器

用 Python 建立一個簡單的 SQLite 庫管理器

Patricia Arquette
發布: 2024-12-10 14:29:08
原創
671 人瀏覽過

Building a Simple SQLite Library Manager in Python

用 Python 建立一個簡單的 SQLite 庫管理器

高效管理資料是任何專案的關鍵部分,而 SQLite 讓這項任務變得簡單且輕量。在本教程中,我們將建立一個小型 Python 應用程式來管理圖書館資料庫,讓您可以輕鬆新增和檢索書籍。

讀完本文,您將了解如何:

  • 建立 SQLite 資料庫和表格。
  • 插入記錄,同時防止重複。
  • 根據特定條件檢索資料。

1. 建立資料庫和表格

讓我們先建立 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 文件,其中包含具有指定欄位的書籍表。


  1. 將書籍插入資料庫

要插入書籍,我們希望確保避免重複條目(基於 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 語句來確保有效地跳過重複條目。


 3. 增加一些書籍

讓我們透過在我們的圖書館中添加一些書籍來測試 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.
登入後複製

4. 檢索書籍

您可以透過查詢資料庫輕鬆檢索資料。例如,要取得圖書館中的所有書籍:

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中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板