Python知识点:如何使用SQLite,在Python开发中进行轻量级数据库操作

在Python开发中,SQLite是一种非常适合轻量级数据库操作的工具,因为它是一个嵌入式数据库,不需要独立的服务器进程。Python内置了对SQLite的支持,使用标准库中的sqlite3模块即可进行数据库操作。下面是如何使用SQLite在Python中进行轻量级数据库操作的详细步骤。

1. 导入SQLite模块

首先,导入Python内置的sqlite3模块:

python 复制代码
import sqlite3

2. 创建或连接到一个SQLite数据库

你可以使用sqlite3.connect()方法连接到一个SQLite数据库。如果数据库文件不存在,SQLite会自动创建它。

python 复制代码
conn = sqlite3.connect('example.db')
  • example.db是数据库的文件名。如果你想在内存中创建一个数据库(不保存到文件),可以使用:memory:作为数据库名:

    python 复制代码
    conn = sqlite3.connect(':memory:')

3. 创建一个游标对象

游标(cursor)对象用于执行SQL命令和查询:

python 复制代码
cursor = conn.cursor()

4. 创建表

使用SQL语句创建表,例如创建一个用户表:

python 复制代码
cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY,
        name TEXT,
        age INTEGER
    )
''')
  • CREATE TABLE IF NOT EXISTS 确保只有在表不存在时才会创建表。
  • INTEGER PRIMARY KEY 定义了一个自增的主键。

5. 插入数据

使用INSERT INTO语句插入数据:

python 复制代码
cursor.execute('''
    INSERT INTO users (name, age) VALUES (?, ?)
''', ("Alice", 30))

cursor.execute('''
    INSERT INTO users (name, age) VALUES (?, ?)
''', ("Bob", 25))

# 提交事务
conn.commit()
  • 使用?占位符避免SQL注入。
  • 通过conn.commit()提交事务,确保数据保存到数据库中。

6. 查询数据

使用SELECT语句查询数据:

python 复制代码
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()

for row in rows:
    print(row)
  • fetchall()方法获取所有的查询结果,并返回一个包含元组的列表。
  • fetchone()方法用于获取单行结果。

7. 更新数据

使用UPDATE语句更新数据:

python 复制代码
cursor.execute('''
    UPDATE users SET age = ? WHERE name = ?
''', (35, "Alice"))

# 提交事务
conn.commit()

8. 删除数据

使用DELETE语句删除数据:

python 复制代码
cursor.execute('''
    DELETE FROM users WHERE name = ?
''', ("Bob",))

# 提交事务
conn.commit()

9. 使用参数化查询

为了避免SQL注入,在执行SQL查询时应始终使用参数化查询:

python 复制代码
name = "Charlie"
age = 28

cursor.execute('''
    INSERT INTO users (name, age) VALUES (?, ?)
''', (name, age))

conn.commit()

10. 关闭连接

操作完成后,关闭游标和数据库连接:

python 复制代码
cursor.close()
conn.close()

11. 处理异常

为了处理数据库操作中的潜在错误,通常会使用try...except块:

python 复制代码
try:
    conn = sqlite3.connect('example.db')
    cursor = conn.cursor()
    
    # 执行数据库操作
    
except sqlite3.Error as e:
    print(f"An error occurred: {e}")
finally:
    if conn:
        conn.close()

12. 使用with语句管理资源

你可以使用with语句来管理连接和游标的资源,确保它们在操作完成后正确关闭:

python 复制代码
with sqlite3.connect('example.db') as conn:
    cursor = conn.cursor()
    cursor.execute('SELECT * FROM users')
    rows = cursor.fetchall()
    for row in rows:
        print(row)

使用with语句,Python会在块结束时自动关闭连接(即使发生异常),简化了资源管理。

13. 高级操作:使用SQLite的ORM框架

虽然直接使用sqlite3模块很方便,但对于复杂应用,ORM(对象关系映射)框架如SQLAlchemy更适合,它允许你通过Python对象操作数据库,同时保留了数据库的强大功能。

小结

SQLite与Python的集成非常紧密,使得轻量级数据库操作变得简单且高效。通过sqlite3模块,你可以在Python应用程序中执行大多数常见的数据库操作,如创建表、插入、更新、删除和查询数据。它是小型应用程序或原型开发的理想选择。

相关推荐
赵渝强老师19 分钟前
【赵渝强老师】PostgreSQL中表的碎片
数据库·postgresql
SuperEugene26 分钟前
Vue状态管理扫盲篇:如何设计一个合理的全局状态树 | 用户、权限、字典、布局配置
前端·vue.js·面试
IVEN_1 小时前
只会Python皮毛?深入理解这几点,轻松进阶全栈开发
python·全栈
Ray Liang2 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Sailing2 小时前
🚀 别再乱写 16px 了!CSS 单位体系已经进入“计算时代”,真正的响应式布局
前端·css·面试
AI攻城狮2 小时前
如何给 AI Agent 做"断舍离":OpenClaw Session 自动清理实践
python
千寻girling2 小时前
一份不可多得的 《 Python 》语言教程
人工智能·后端·python
全栈老石4 小时前
拆解低代码引擎核心:元数据驱动的"万能表"架构
数据库·低代码
SuperEugene5 小时前
Vue状态管理扫盲篇:Vuex 到 Pinia | 为什么大家都在迁移?核心用法对比
前端·vue.js·面试
Hilaku5 小时前
我会如何考核一个在简历里大谈 AI 提效的高级前端?
前端·javascript·面试