学习SQLite与Python应用

miniqmt 阅读:336 2025-01-15 17:13:39 评论:0

学习 SQLite 数据库和 Python 的应用是一个非常有用的技能,尤其是在处理小型到中型数据集时。SQLite 是一个轻量级的嵌入式数据库,非常适合初学者学习和使用。以下是一个学习路径,帮助你系统地掌握 SQLite 和 Python 的结合使用。

  1. 了解 SQLite 基础知识
    什么是 SQLite?

SQLite 是一个自包含、无服务器、零配置的嵌入式数据库引擎。

它非常适合嵌入式设备、移动应用和小型项目。

SQLite 的特点

无需单独的服务器进程。

数据库存储在单个磁盘文件中。

支持标准的 SQL 语法。

安装 SQLite

大多数 Linux 发行版和 macOS 已经预装了 SQLite。

Windows 用户可以从 SQLite 官网 下载预编译的二进制文件。

  1. 学习 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:默认值。

  1. 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:博客系统

创建一个数据库来存储博客文章(标题、内容、作者、发布时间等)。

实现文章的增删改查功能。

  1. 学习资源
    官方文档

SQLite 官方文档

Python sqlite3 模块文档

在线教程

SQLite Tutorial

Python SQLite3 Tutorial

书籍

《SQLite 权威指南》

《Python 编程:从入门到实践》

  1. 进一步学习
    数据库设计

学习如何设计规范的数据库表结构。

了解数据库范式(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://docs.python.org/3/library/sqlite3.html

https://www.sqlite.org/docs.html

本文由 海星量化研究所 作者提供,转载请保留链接和署名!网址:https://qmt.hxquant.com/?id=30

标签:SQLiteminiqmt
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源; 2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任; 3.作者投稿可能会经我们编辑修改或补充。

搜索
排行榜
关注我们

扫码开通QMT/ptrade