Python 中的 Sqlite3 库是 Python 标准库的一部分,它提供了一个简单而强大的接口来操作 SQLite数据库。
SQLite 是一个轻量级的、无服务器的、自包含的关系型数据库引擎,非常适合嵌入式应用和小型项目。让我们一起来探索 Sqlite3 的魅力吧!
一、安装
好消息是,Sqlite3 是 Python 标准库的一部分,所以我们不需要额外安装!只要你安装了 Python,就已经可以使用 Sqlite3了。太棒了,对吧?
如果你想要使用最新版本的 SQLite,可能需要单独安装。但对于大多数情况来说,标准库中的版本已经足够用了。
二、基本用法
让我们从一个简单的例子开始,看看如何使用 Sqlite3:
import sqlite3
# 连接到数据库(如果不存在会自动创建)
conn = sqlite3器3.connect('example.db')
# 创建一个游标对象
cursor = conn.cursor()
# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')
# 插入数据
cursor.execute(“INSERT INTO users (name, age) VALUES (?, ?)”, ('Alice', 30))
# 提交更改
conn.commit()
# 查询数据
cursor.execute(“SELECT * FROM users”)
print(cursor.fetchall())
# 关闭连接
conn.close()
这个例子展示了 Sqlite3 的基本操作:连接数据库、创建表、插入数据、查询数据和关闭连接。
小贴士 :记得在操作完成后调用 conn.commit()
来保存更改,否则你的操作可能会丢失哦!
三、高级用法
Sqlite3 还有一些高级功能,比如使用上下文管理器和参数化查询:
import sqlite3
# 使用上下文管理器自动处理连接
with sqlite3.connect('example.db') as conn:
cursor = conn.cursor()
# 参数化查询,防止 SQL 注入
user_id = 1
cursor.execute(“SELECT * FROM users WHERE id = ?”, (user_id,))
# 使用字典游标
conn.row_factory = sqlite3.Row
cursor = conn.cursor()
cursor.execute(“SELECT * FROM users”)
for row in cursor:
print(f“Name: {row['name']}, Age: {row['age']}”)
使用上下文管理器可以自动处理连接的关闭,参数化查询可以防止 SQL 注入攻击,而字典游标让我们可以通过列名来访问数据。
四、实际使用案例
让我们来看一个稍微复杂一点的例子:一个简单的图书管理系统。
import sqlite3
class BookManager:
def __init__(self, db_name):
self.conn = sqlite3.connect(db_name)
self.cursor = self.conn.cursor()
self.create_table()
def create_table(self):
self.cursor.execute('''CREATE TABLE IF NOT EXISTS books
(id INTEGER PRIMARY KEY, title TEXT, author TEXT, year INTEGER)''')
self.conn.commit()
def add_book(self, title, author, year):
self.cursor.execute(“INSERT INTO books (title, author, year) VALUES (?, ?, ?)”,
(title, author, year))
self.conn.commit()
def get_all_books(self):
self.cursor.execute(“SELECT * FROM books”)
return self.cursor.fetchall()
def search_book(self器3, title):
self.cursor.execute(“SELECT * FROM books WHERE title LIKE ?”, ('%'+title+'%',))
return self.cursor.fetchall()
def close(self):
self.conn.close()
# 使用示例
manager = BookManager('library.db')
# 添加一些书籍
manager.add_book('Python编程', '张三', 2020)
manager.add_book('数据科学入门', '李四', 2019)
# 获取所有书籍
print(“所有书籍:”)
for book in manager.get_all_books():
print(book)
# 搜索书籍
print(“\n搜索结果:”)
for book in manager.search_book('Python'):
print(book)
manager.close()
这个例子展示了如何使用 Sqlite3 创建一个简单的图书管理系统。我们定义了一个 BookManager
类,它封装了数据库操作,包括添加书籍、获取所有书籍和搜索书籍。
注意事项 :在实际应用中,你可能需要添加更多的错误处理和数据验证逻辑。
五、总结
Sqlite3 是一个非常强大且易于使用的 Python 库,它为我们提供了一种简单的方式来处理 SQLite 数据库。它的主要特点和优势包括:
- 内置于 Python 标准库,无需额外安装。
- 轻量级,适合嵌入式应用和小型项目。
- 支持 SQL 标准,可以进行复杂的数据库操作。
- 提供了方便的 Python API,使数据库操作变得简单。