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应用程序中执行大多数常见的数据库操作,如创建表、插入、更新、删除和查询数据。它是小型应用程序或原型开发的理想选择。

相关推荐
喵手6 分钟前
Python爬虫实战:构建各地统计局数据发布板块的自动化索引爬虫(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集数据csv导出·采集各地统计局数据发布数据·统计局数据采集
此生只爱蛋9 分钟前
【Redis】主从复制
数据库·redis
马猴烧酒.28 分钟前
【面试八股|JAVA多线程】JAVA多线程常考面试题详解
java·服务器·数据库
天天爱吃肉82181 小时前
跟着创意天才周杰伦学新能源汽车研发测试!3年从工程师到领域专家的成长秘籍!
数据库·python·算法·分类·汽车
大巨头1 小时前
sql2008 数据库分页语句
数据库
m0_715575341 小时前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python
甄心爱学习1 小时前
【leetcode】判断平衡二叉树
python·算法·leetcode
深蓝电商API1 小时前
滑块验证码破解思路与常见绕过方法
爬虫·python
Ulyanov1 小时前
Pymunk物理引擎深度解析:从入门到实战的2D物理模拟全攻略
python·游戏开发·pygame·物理引擎·pymunk
sensen_kiss1 小时前
INT303 Coursework1 爬取影视网站数据(如何爬虫网站数据)
爬虫·python·学习