谢田波
谢田波
Published on 2024-12-19 / 7 Visits
0
0

SQLite数据库

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 数据库。它的主要特点和优势包括:

  1. 内置于 Python 标准库,无需额外安装。
  2. 轻量级,适合嵌入式应用和小型项目。
  3. 支持 SQL 标准,可以进行复杂的数据库操作。
  4. 提供了方便的 Python API,使数据库操作变得简单。

Comment