专业编程基础技术教程

网站首页 > 基础教程 正文

Python玩转SQLite3:从入门到精通,轻松搞定数据库操作!

ccvgpt 2025-02-27 14:27:56 基础教程 1 ℃

喜欢的条友记得关注、点赞、转发、收藏,你们的支持就是我最大的动力源泉。

引言:SQLite3——轻量级数据库的王者

在数据存储和管理的世界里,SQLite3以其轻量、易用和高效的特点,成为了无数开发者的首选。无论是移动应用、嵌入式设备,还是小型Web应用,SQLite3都能轻松应对。而Python作为一门简洁强大的编程语言,与SQLite3的结合更是天作之合!今天,我们将带你从零开始,深入探索Python中SQLite3的使用,从入门到精通,让你轻松搞定数据库操作!

Python玩转SQLite3:从入门到精通,轻松搞定数据库操作!


一、SQLite3简介:为什么选择它?

1.1 什么是SQLite3?

SQLite3是一个嵌入式关系型数据库,它不需要独立的服务器进程,所有数据存储在一个单独的文件中。它的设计目标是轻量、快速、易用,非常适合小型项目或原型开发。

1.2 SQLite3的优势

  • 零配置:无需安装或配置,直接使用。
  • 跨平台:支持Windows、Linux、macOS等主流操作系统。
  • 轻量高效:数据库文件小,性能优异。
  • 易于集成:Python内置支持SQLite3,无需额外安装。

二、Python中使用SQLite3:从入门到精通

2.1 安装与导入

Python内置了sqlite3模块,无需额外安装,直接导入即可:

import sqlite3

2.2 创建数据库与连接

使用sqlite3.connect()方法创建或连接数据库。如果数据库文件不存在,会自动创建。

# 连接数据库(如果不存在则创建)
conn = sqlite3.connect('./sqlite3数据库/example.db')

运行后在当前目录生成example.db数据库文件。

2.3 创建表

通过执行SQL语句创建表。使用cursor.execute()方法执行SQL命令。

# 创建游标对象
cursor = conn.cursor()

# 创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    age INTEGER
)
''')

# 提交更改
conn.commit()

2.4 插入数据

使用INSERT INTO语句插入数据。

# 插入单条数据
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('Alice', 25))

# 插入多条数据
users = [('Bob', 30), ('Charlie', 35), ('David', 40)]
cursor.executemany("INSERT INTO users (name, age) VALUES (?, ?)", users)

# 提交更改
conn.commit()

2.5 查询数据

使用SELECT语句查询数据,并通过cursor.fetchall()或cursor.fetchone()获取结果。

import sqlite3

# 连接数据库(前期已经创建,并建立表users和插入数据)
conn = sqlite3.connect('./sqlite3数据库/example.db')

# 创建游标对象
cursor = conn.cursor()

# 查询所有数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
    print(row)

# 查询单条数据
cursor.execute("SELECT * FROM users WHERE name = ?", ('Alice',))
row = cursor.fetchone()
print(row)

2.6 更新数据

使用UPDATE语句更新数据。

import sqlite3

# 连接数据库(前期已经创建,并建立表users和插入数据)
conn = sqlite3.connect('./sqlite3数据库/example.db')

# 创建游标对象
cursor = conn.cursor()

# 更新数据
cursor.execute("UPDATE users SET age = ? WHERE name = ?", (26, 'Alice'))

# 提交更改
conn.commit()

# 查询所有数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
    print(row)

2.7 删除数据

使用DELETE语句删除数据。

import sqlite3

# 连接数据库(前期已经创建,并建立表users和插入数据)
conn = sqlite3.connect('./sqlite3数据库/example.db')

# 创建游标对象
cursor = conn.cursor()

# 删除数据
cursor.execute("DELETE FROM users WHERE name = ?", ('David',))

# 提交更改
conn.commit()

# 查询所有数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
    print(row)

2.8 关闭连接

操作完成后,记得关闭数据库连接。

# 关闭游标和连接
cursor.close()
conn.close()

三、SQLite3高级技巧:从精通到实战

3.1 事务管理

SQLite3支持事务操作,确保数据的一致性。使用BEGIN、COMMIT和ROLLBACK管理事务。

try:
    conn.execute("BEGIN")
    cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('Eve', 28))
    cursor.execute("UPDATE users SET age = ? WHERE name = ?", (27, 'Alice'))
    conn.commit()
except:
    conn.rollback()

3.2 使用上下文管理器

通过with语句自动管理连接和游标,避免资源泄露。

with sqlite3.connect('example.db') as conn:
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM users")
    print(cursor.fetchall())

3.3 数据库备份与恢复

使用SQLite3的备份API或直接复制数据库文件进行备份。

import shutil
shutil.copy2('example.db', 'example_backup.db')

3.4 性能优化

  • 使用索引:为常用查询字段创建索引,提升查询速度。
cursor.execute("CREATE INDEX idx_name ON users (name)")
  • 批量操作:使用executemany()批量插入或更新数据,减少I/O开销。

四、SQLite3实战:构建一个简单的任务管理系统

4.1 需求分析

  • 用户可以添加任务。
  • 用户可以查看所有任务。
  • 用户可以标记任务为已完成。
  • 用户可以删除任务。

4.2 数据库设计

cursor.execute('''
CREATE TABLE IF NOT EXISTS tasks (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    description TEXT NOT NULL,
    status TEXT DEFAULT 'pending'
)
''')

4.3 功能实现

def add_task(description):
    cursor.execute("INSERT INTO tasks (description) VALUES (?)", (description,))
    conn.commit()

def view_tasks():
    cursor.execute("SELECT * FROM tasks")
    return cursor.fetchall()

def complete_task(task_id):
    cursor.execute("UPDATE tasks SET status = 'completed' WHERE id = ?", (task_id,))
    conn.commit()

def delete_task(task_id):
    cursor.execute("DELETE FROM tasks WHERE id = ?", (task_id,))
    conn.commit()

4.4 运行示例

import sqlite3

# 连接数据库(前期已经创建,并建立表users和插入数据)
conn = sqlite3.connect('./sqlite3数据库/example.db')

# 创建游标对象
cursor = conn.cursor()

cursor.execute('''
CREATE TABLE IF NOT EXISTS tasks (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    description TEXT NOT NULL,
    status TEXT DEFAULT 'pending'
)
''')

def add_task(description):
    cursor.execute("INSERT INTO tasks (description) VALUES (?)", (description,))
    conn.commit()

def view_tasks():
    cursor.execute("SELECT * FROM tasks")
    return cursor.fetchall()

def complete_task(task_id):
    cursor.execute("UPDATE tasks SET status = 'completed' WHERE id = ?", (task_id,))
    conn.commit()

def delete_task(task_id):
    cursor.execute("DELETE FROM tasks WHERE id = ?", (task_id,))
    conn.commit()

add_task("学习 Python")
add_task("学习 SQLite3")
print(view_tasks())
complete_task(1)
print(view_tasks())
delete_task(2)
print(view_tasks())

五、SQLite3的局限性与适用场景

5.1 局限性

  • 并发性能:SQLite3的写操作是串行的,不适合高并发场景。
  • 数据量:适合小型数据集,大数据量时性能下降。

5.2 适用场景

  • 原型开发:快速搭建应用原型。
  • 嵌入式设备:资源有限的环境。
  • 本地存储:桌面应用或移动应用的本地数据存储。

结语:SQLite3——你的数据管理利器

通过本文的学习,你已经掌握了Python中SQLite3的从入门到精通的全部技巧!无论是简单的数据存储,还是复杂的任务管理,SQLite3都能轻松应对。赶快动手试试吧,让你的数据管理更加高效!

喜欢的条友记得关注、点赞、转发、收藏,你们的支持就是我最大的动力源泉。

Tags:

最近发表
标签列表