高效管理数据是任何项目的关键部分,而 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中文网其他相关文章!