学习SQLite与Python应用
学习 SQLite 数据库和 Python 的应用是一个非常有用的技能,尤其是在处理小型到中型数据集时。SQLite 是一个轻量级的嵌入式数据库,非常适合初学者学习和使用。以下是一个学习路径,帮助你系统地掌握 SQLite 和 Python 的结合使用。
- 了解 SQLite 基础知识
什么是 SQLite?
SQLite 是一个自包含、无服务器、零配置的嵌入式数据库引擎。
它非常适合嵌入式设备、移动应用和小型项目。
SQLite 的特点
无需单独的服务器进程。
数据库存储在单个磁盘文件中。
支持标准的 SQL 语法。
安装 SQLite
大多数 Linux 发行版和 macOS 已经预装了 SQLite。
Windows 用户可以从 SQLite 官网 下载预编译的二进制文件。
- 学习 SQL 基础
SQLite 使用标准的 SQL 语法,因此学习 SQL 是必不可少的。
基本 SQL 命令
CREATE TABLE:创建表。
INSERT INTO:插入数据。
SELECT:查询数据。
UPDATE:更新数据。
DELETE:删除数据。
DROP TABLE:删除表。
SQL 数据类型
INTEGER:整型。
REAL:浮点型。
TEXT:文本类型。
BLOB:二进制数据。
NULL:空值。
SQL 约束
PRIMARY KEY:主键。
NOT NULL:非空约束。
UNIQUE:唯一约束。
CHECK:检查约束。
DEFAULT:默认值。
- Python 中的 SQLite 操作
Python 内置了 sqlite3 模块,可以直接操作 SQLite 数据库。
连接到数据库
python
复制
import sqlite3
连接到数据库(如果数据库不存在,则会自动创建)
conn = sqlite3.connect(‘example.db’)
创建表
python
复制
cursor = conn.cursor()
创建一个表
cursor.execute(‘’’
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER
)
‘’’)
插入数据
python
复制
cursor.execute(“INSERT INTO users (name, age) VALUES (‘Alice’, 30)”)
cursor.execute(“INSERT INTO users (name, age) VALUES (‘Bob’, 25)”)
提交事务
conn.commit()
查询数据
python
复制
cursor.execute(“SELECT * FROM users”)
rows = cursor.fetchall()
for row in rows:
print(row)
更新数据
python
复制
cursor.execute(“UPDATE users SET age = 31 WHERE name = ‘Alice’”)
conn.commit()
删除数据
python
复制
cursor.execute(“DELETE FROM users WHERE name = ‘Bob’”)
conn.commit()
关闭连接
python
复制
conn.close()
4. 进阶操作
使用上下文管理器
Python 的 with 语句可以自动管理数据库连接的打开和关闭。
python
复制
with sqlite3.connect(‘example.db’) as conn:
cursor = conn.cursor()
cursor.execute(“SELECT * FROM users”)
print(cursor.fetchall())
参数化查询
使用参数化查询可以防止 SQL 注入攻击。
python
复制
name = ‘Alice’
cursor.execute(“SELECT * FROM users WHERE name = ?”, (name,))
事务处理
SQLite 支持事务,确保数据的一致性。
python
复制
try:
cursor.execute(“INSERT INTO users (name, age) VALUES (‘Charlie’, 28)”)
cursor.execute(“INSERT INTO users (name, age) VALUES (‘David’, 22)”)
conn.commit()
except sqlite3.Error as e:
print(f”An error occurred: {e}”)
conn.rollback()
5. 实践项目
通过实际项目来巩固所学知识:
项目 1:简单的联系人管理系统
创建一个数据库来存储联系人信息(姓名、电话、邮箱等)。
实现添加、删除、更新和查询联系人的功能。
项目 2:博客系统
创建一个数据库来存储博客文章(标题、内容、作者、发布时间等)。
实现文章的增删改查功能。
- 学习资源
官方文档
SQLite 官方文档
Python sqlite3 模块文档
在线教程
SQLite Tutorial
Python SQLite3 Tutorial
书籍
《SQLite 权威指南》
《Python 编程:从入门到实践》
- 进一步学习
数据库设计
学习如何设计规范的数据库表结构。
了解数据库范式(1NF, 2NF, 3NF)。
性能优化
学习如何优化 SQL 查询。
使用索引来提高查询速度。
其他数据库
了解其他数据库系统,如 MySQL、PostgreSQL 等,比较它们与 SQLite 的异同。
第一课
import sqlite3
# 连接到数据库(如果数据库不存在,则会自动创建)
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# 创建一个表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER
)
''')
# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")
cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")
# 提交事务
conn.commit()
# 查询数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
print(row)
# 更新数据
cursor.execute("UPDATE users SET age = 31 WHERE name = 'Alice'")
conn.commit()
# 关闭连接
conn.close()
第二课
# -*- coding: utf-8 -*-
import sqlite3
# 连接到数据库(如果数据库不存在,则会自动创建)
conn = sqlite3.connect('example.db')
with sqlite3.connect('example.db') as conn:
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")
print(cursor.fetchall())
# 使用参数化查询可以防止 SQL 注入攻击
name = 'Alice'
cursor.execute("SELECT * FROM users WHERE name = ?", (name,))
# SQLite 支持事务,确保数据的一致性
try:
cursor.execute("INSERT INTO users (name, age) VALUES ('Charlie', 28)")
cursor.execute("INSERT INTO users (name, age) VALUES ('David', 22)")
conn.commit()
except sqlite3.Error as e:
print(f"An error occurred: {e}")
conn.rollback()
参考资料
https://www.tutorialspoint.com/sqlite/sqlite_python.htm
本文由 海星量化研究所 作者提供,转载请保留链接和署名!网址:https://qmt.hxquant.com/?id=30
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源; 2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任; 3.作者投稿可能会经我们编辑修改或补充。