1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| class BookDatabase: def __init__(self, db_name="library.db"): """初始化数据库连接""" self.conn = sqlite3.connect(db_name) self.create_table() def create_table(self): """创建图书数据表""" cursor = self.conn.cursor() cursor.execute(''' CREATE TABLE IF NOT EXISTS books ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, author TEXT NOT NULL, isbn TEXT UNIQUE, publish_year INTEGER, quantity INTEGER DEFAULT 0 ) ''') self.conn.commit() def add_book(self, title, author, isbn, year, quantity): """添加新图书""" cursor = self.conn.cursor() try: cursor.execute(''' INSERT INTO books (title, author, isbn, publish_year, quantity) VALUES (?, ?, ?, ?, ?) ''', (title, author, isbn, year, quantity)) self.conn.commit() return True except sqlite3.IntegrityError: return False def delete_book(self, book_id): """根据ID删除图书""" cursor = self.conn.cursor() cursor.execute("DELETE FROM books WHERE id = ?", (book_id,)) self.conn.commit() return cursor.rowcount > 0 def update_book(self, book_id, title, author, isbn, year, quantity): """更新图书信息""" cursor = self.conn.cursor() cursor.execute(''' UPDATE books SET title=?, author=?, isbn=?, publish_year=?, quantity=? WHERE id=? ''', (title, author, isbn, year, quantity, book_id)) self.conn.commit() return cursor.rowcount > 0 def search_books(self, keyword=""): """搜索图书(支持模糊查询)""" cursor = self.conn.cursor() query = ''' SELECT * FROM books WHERE title LIKE ? OR author LIKE ? OR isbn LIKE ? ''' cursor.execute(query, (f"%{keyword}%", f"%{keyword}%", f"%{keyword}%")) return cursor.fetchall() def get_all_books(self): """获取所有图书""" cursor = self.conn.cursor() cursor.execute("SELECT * FROM books ORDER BY title") return cursor.fetchall() def close(self): """关闭数据库连接""" self.conn.close()
|