Python SQLite 数据库编程入门
Python SQLite 数据库编程入门指南
SQLite 是一个轻量级的嵌入式数据库,它不需要独立的服务器进程,而是直接将数据存储在单个文件中。这使得它成为小型项目、桌面应用、嵌入式系统以及学习数据库编程的理想选择。 Python 提供了内置的 sqlite3
模块,使得与 SQLite 数据库的交互变得非常便捷。本文将深入探讨如何使用 Python 进行 SQLite 数据库编程,涵盖从基础操作到高级应用的各个方面。
1. 连接到数据库
使用 Python 操作 SQLite 数据库的第一步是建立连接。sqlite3
模块的 connect()
函数用于创建数据库连接。如果指定的数据库文件不存在,则会自动创建一个新的数据库文件。
```python
import sqlite3
连接到数据库,如果不存在则创建
conn = sqlite3.connect('mydatabase.db')
获取游标对象
cursor = conn.cursor()
关闭连接
conn.close()
```
2. 创建表
建立连接后,可以使用 SQL 语句创建表。cursor.execute()
方法用于执行 SQL 查询。
```python
import sqlite3
conn = sqlite3.connect('mydatabase.db')
cursor = conn.cursor()
创建名为 "users" 的表,包含 id、name 和 email 字段
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE
)
''')
提交更改
conn.commit()
conn.close()
```
3. 插入数据
使用 INSERT INTO
语句向表中插入数据。可以使用问号占位符来防止 SQL 注入攻击。
```python
import sqlite3
conn = sqlite3.connect('mydatabase.db')
cursor = conn.cursor()
插入数据,使用占位符
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('Alice', '[email protected]'))
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('Bob', '[email protected]'))
conn.commit()
conn.close()
```
4. 查询数据
使用 SELECT
语句查询数据。cursor.fetchone()
获取单行结果,cursor.fetchall()
获取所有结果。
```python
import sqlite3
conn = sqlite3.connect('mydatabase.db')
cursor = conn.cursor()
查询所有用户
cursor.execute("SELECT * FROM users")
users = cursor.fetchall()
for user in users:
print(user)
查询特定用户
cursor.execute("SELECT * FROM users WHERE name=?", ('Alice',))
alice = cursor.fetchone()
print(alice)
conn.close()
```
5. 更新数据
使用 UPDATE
语句更新数据。
```python
import sqlite3
conn = sqlite3.connect('mydatabase.db')
cursor = conn.cursor()
更新 Alice 的邮箱地址
cursor.execute("UPDATE users SET email=? WHERE name=?", ('[email protected]', 'Alice'))
conn.commit()
conn.close()
```
6. 删除数据
使用 DELETE FROM
语句删除数据。
```python
import sqlite3
conn = sqlite3.connect('mydatabase.db')
cursor = conn.cursor()
删除 Bob 的记录
cursor.execute("DELETE FROM users WHERE name=?", ('Bob',))
conn.commit()
conn.close()
```
7. 使用 with 语句简化代码
使用 with
语句可以自动管理数据库连接,避免忘记关闭连接。
```python
import sqlite3
with sqlite3.connect('mydatabase.db') as conn:
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")
users = cursor.fetchall()
for user in users:
print(user)
```
8. 事务处理
SQLite 支持事务处理,确保数据的一致性。可以使用 conn.commit()
提交事务,conn.rollback()
回滚事务。
```python
import sqlite3
try:
with sqlite3.connect('mydatabase.db') as conn:
cursor = conn.cursor()
# 开始事务
cursor.execute("BEGIN TRANSACTION")
# 执行一系列操作
cursor.execute(...)
cursor.execute(...)
# 提交事务
conn.commit()
except Exception as e:
# 回滚事务
conn.rollback()
print("Error:", e)
```
9. 高级应用:行工厂
可以使用 row_factory
属性自定义查询结果的行格式,例如将其转换为字典。
```python
import sqlite3
conn = sqlite3.connect('mydatabase.db')
conn.row_factory = sqlite3.Row # 使用 Row 工厂
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")
users = cursor.fetchall()
for user in users:
print(user['name'], user['email']) # 可以像字典一样访问字段
conn.close()
```
10. 高级应用:用户自定义函数
SQLite 允许创建用户自定义函数,扩展数据库的功能。
```python
import sqlite3
import math
def my_sqrt(x):
return math.sqrt(x)
conn = sqlite3.connect('mydatabase.db')
conn.create_function('my_sqrt', 1, my_sqrt) # 注册自定义函数
cursor = conn.cursor()
cursor.execute("SELECT my_sqrt(16)")
result = cursor.fetchone()
print(result) # 输出 (4.0,)
conn.close()
```
总结:
本文详细介绍了 Python SQLite 数据库编程的基础知识和一些高级应用。 通过学习这些内容,你应该能够使用 Python 轻松地操作 SQLite 数据库,进行数据的创建、查询、更新和删除等操作。 SQLite 的轻量级特性和 Python 的简洁语法使得它们成为小型项目和学习数据库编程的绝佳组合。 记住要始终使用参数化查询来防止 SQL 注入攻击,并合理利用事务处理来确保数据的一致性。 希望本文能够帮助你快速入门 Python SQLite 数据库编程。