1. SQLite介绍
SQLite是一种嵌入式数据库引擎,它采用C语言编写,提供了轻量级的、无服务器的、独立的、基于磁盘的数据库,旨在提供一个简单、高效、可靠的数据库解决方案。SQLite在许多嵌入式设备上得到广泛应用,也可以在Python中轻松使用。
2. 安装SQLite
2.1 Windows平台
在Windows平台上安装SQLite非常简单。只需下载SQLite的预编译二进制文件,解压缩并将其包含在系统的环境变量中即可。
2.2 macOS平台
在macOS平台上,可以使用Homebrew来安装SQLite。
brew install sqlite
2.3 Linux平台
在Linux平台上,可以使用系统的包管理器来安装SQLite。
sudo apt-get install sqlite3
3. 使用SQLite数据库
3.1 连接数据库
在Python中,可以使用sqlite3
模块来连接SQLite数据库。
import sqlite3
conn = sqlite3.connect('mydatabase.db')
上述代码将连接到名为mydatabase.db
的数据库文件。如果该文件不存在,将会自动创建。
可以使用conn.close()
方法关闭数据库连接。
3.2 创建表
可以使用execute()
方法执行SQL语句来创建表。
conn.execute('''CREATE TABLE students
(id INT PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
age INT NOT NULL);''')
上述代码将创建一个名为students
的表,该表包含id
、name
和age
三个列。
3.3 插入数据
可以使用execute()
方法执行SQL语句来插入数据。
conn.execute("INSERT INTO students (id, name, age) VALUES (1, 'Alice', 20)")
conn.execute("INSERT INTO students (id, name, age) VALUES (2, 'Bob', 22)")
conn.execute("INSERT INTO students (id, name, age) VALUES (3, 'Charlie', 19)")
3.4 查询数据
可以使用execute()
方法执行SQL语句来查询数据。
cursor = conn.execute("SELECT * FROM students")
for row in cursor:
print("ID:", row[0])
print("Name:", row[1])
print("Age:", row[2])
上述代码将查询students
表中的所有数据,并打印出来。
3.5 更新数据
可以使用execute()
方法执行SQL语句来更新数据。
conn.execute("UPDATE students SET age = 21 WHERE id = 1")
上述代码将更新students
表中id
为1的记录的age
为21。
3.6 删除数据
可以使用execute()
方法执行SQL语句来删除数据。
conn.execute("DELETE FROM students WHERE age < 20")
上述代码将删除students
表中age
小于20的记录。
3.7 事务
可以使用commit()
方法提交事务,使用rollback()
方法回滚事务。
conn.execute("BEGIN")
conn.execute("INSERT INTO students (id, name, age) VALUES (4, 'David', 18)")
conn.commit()
上述代码通过使用BEGIN
语句开始一个事务,并在事务中插入了一条记录后,使用commit()
方法提交事务。
4. 高级使用
4.1 参数化查询
参数化查询可以防止SQL注入攻击,同时提高查询的效率。
name = 'Alice'
age = 20
conn.execute("SELECT * FROM students WHERE name = ? AND age = ?", (name, age))
4.2 批量插入
可以使用executemany()
方法来批量插入数据。
students = [(5, 'Emily', 19), (6, 'Frank', 22), (7, 'Grace', 21)]
conn.executemany("INSERT INTO students (id, name, age) VALUES (?, ?, ?)", students)
4.3 外键约束
SQLite支持外键约束,可以确保表之间的关联完整性。
conn.execute('''CREATE TABLE departments
(id INT PRIMARY KEY NOT NULL,
name TEXT NOT NULL);''')
conn.execute('''CREATE TABLE employees
(id INT PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
age INT NOT NULL,
department_id INT NOT NULL,
FOREIGN KEY (department_id) REFERENCES departments(id));''')
4.4 索引
索引可以加快查询的速度。
conn.execute("CREATE INDEX idx_students_name ON students (name)")
5. 总结
本文介绍了在Python中使用SQLite的基本操作,包括连接数据库、创建表、插入数据、查询数据、更新数据、删除数据和事务等。同时还介绍了一些高级使用技巧,如参数化查询、批量插入、外键约束和索引等。SQLite是一个非常简单、灵活和高效的数据库引擎,适用于各种应用场景。