Python中的数据库
这段代码展示了如何使用 Python 的sqlite3模块来创建数据库、创建表、插入数据、查询数据并关闭连接。下面单独将数据库中的增删改查进行讲解增删改查增(插入数据):使用向数据库中添加新记录。# 连接数据库# 游标# 插入数据)',('小牛',18,'A')))',('小羊',19,'B')))',('小狗',20,'C'))#关闭连接插入代码使用execute方法执行了一条 SQL 插入命令
本篇主要讲解的数据库的基础
安装:
安装MySQL8.0:https://dev.mysql.com/downloads/windows/installer/8.0.html
安装SQLite的Python库:在 Python 中,SQLite 的 Python 库是 sqlite3
,它是 Python 标准库的一部分,因此不需要额外安装。这意味着当你安装 Python 时,sqlite3
通常已经包含在内。
SQLite的优缺点:
优点
简单易用:SQLite 的安装和部署非常简单,只需将 SQLite 库文件引用到应用程序中即可开始使用。
零配置:SQLite 不需要复杂的安装和配置过程,数据库存储在单个文件中,无需额外的服务器。
轻量级和高效:SQLite 的核心引擎非常小巧,占用的内存和磁盘空间少,处理小型数据集时非常高效。
跨平台支持:SQLite 支持多种操作系统,包括 Windows、Linux、macOS 等,方便跨平台开发和部署。
事务支持:SQLite 支持事务处理,确保数据的一致性和完整性。
高性能:SQLite 在读取密集型应用中表现出色,支持高达每秒 10 万次的并发查询。
高可靠性:SQLite 遵循 ACID 事务原则,确保数据的可靠性和完整性。
缺点
并发限制:SQLite 是单用户数据库,一次只能处理一个写入事务,这在高并发写入的场景下可能导致性能瓶颈。
缺乏高级特性:SQLite 不支持一些高级功能,如存储过程、触发器和外键约束。
存储空间限制:SQLite 将整个数据库存储在一个文件中,存储空间有限,不适合处理非常大的数据集。
性能限制:在处理大型数据集和高并发访问时,SQLite 的性能可能不如其他数据库系统。
SQLite 是一个轻量级、高效、跨平台的嵌入式数据库,适用于资源受限和跨平台开发场景。然而,在高并发写入的场景下,可能需要考虑其他数据库系统。
创建数据库:
import sqlite3
# 连接到 SQLite 数据库
# 如果数据库文件不存在,会自动创建
conn = sqlite3.connect('example.db')
# 创建一个游标对象
cursor = conn.cursor()
# 创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE
)
''')
# 插入数据
cursor.execute('INSERT INTO users (name, email) VALUES (?, ?)', ('Alice', 'alice@example.com'))
cursor.execute('INSERT INTO users (name, email) VALUES (?, ?)', ('Bob', 'bob@example.com'))
# 提交事务
conn.commit()
# 查询数据
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()
for row in rows:
print(row)
# 关闭连接
conn.close()
好,这是完整的代码,下面我详细解释一下
1. 导入 SQLite 库
Python复制
import sqlite3
这行代码导入了 Python 的 sqlite3
模块,这个模块允许你与 SQLite 数据库进行交互。
2. 连接到 SQLite 数据库
Python复制
conn = sqlite3.connect('example.db')
这行代码创建了一个到 SQLite 数据库的连接。如果 example.db
文件不存在,它会自动创建一个新的数据库文件。conn
是连接对象,用于与数据库进行交互。
3. 创建游标对象
Python复制
cursor = conn.cursor()
游标(Cursor)是一个对象,用于在数据库中执行 SQL 查询和检索结果。这行代码创建了一个游标对象,用于与数据库进行交互。
4. 创建表
Python复制
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE
)
''')
这行代码使用 execute
方法执行了一条 SQL 命令,用于创建一个名为 users
的表。表的结构如下:
-
id
: 整数类型,主键,自动递增。 -
name
: 文本类型,不能为空。 -
email
: 文本类型,不能为空,并且必须唯一。
IF NOT EXISTS
子句确保如果表已经存在,则不会尝试重新创建它,从而避免错误。
5. 插入数据
Python复制
cursor.execute('INSERT INTO users (name, email) VALUES (?, ?)', ('Alice', 'alice@example.com'))
cursor.execute('INSERT INTO users (name, email) VALUES (?, ?)', ('Bob', 'bob@example.com'))
这两行代码使用 execute
方法执行了两条 SQL 插入命令,分别向 users
表中插入了两条记录。?
是参数占位符,后面的元组提供了要插入的实际值。这种方式可以防止 SQL 注入攻击,确保数据安全。
6. 提交事务
Python复制
conn.commit()
这行代码提交了当前的事务,确保所有对数据库的更改都被保存。在 SQLite 中,事务是确保数据一致性和完整性的机制。
7. 查询数据
Python复制
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()
这行代码执行了一条 SQL 查询命令,用于检索 users
表中的所有记录。fetchall()
方法获取了查询结果的所有行,并将它们存储在 rows
变量中。
8. 打印结果
Python复制
for row in rows:
print(row)
这行代码遍历查询结果,并打印出每一行的数据。row
是一个元组,包含表中每一列的值。
9. 关闭连接
Python复制
conn.close()
这行代码关闭了与数据库的连接,释放了资源。关闭连接是确保数据库操作完成后释放系统资源的重要步骤。
总结
这段代码展示了如何使用 Python 的 sqlite3
模块来创建数据库、创建表、插入数据、查询数据并关闭连接。
下面单独将数据库中的增删改查进行讲解
增删改查
增(插入数据):
使用
INSERT INTO
向数据库中添加新记录。
# 连接数据库
conn = sqlite3.connect('student.db')
# 游标
cur = conn.cursor()
# 插入数据
cur.execute('insert into student(name,age,grade)values(?,?,?)',('小牛',18,'A'))
cur.execute('insert into student(name,age,grade)values(?,?,?)',('小羊',19,'B'))
cur.execute('insert into student(name,age,grade)values(?,?,?)',('小狗',20,'C'))
#关闭连接
conn.commit()
conn.close()
解释:
插入代码使用 execute
方法执行了一条 SQL 插入命令,向 students
表中插入了一条记录。?
是参数占位符,后面的元组提供了要插入的实际值:
-
'小狗'
是学生的姓名。 -
20
是学生的年龄。 -
'C'
是学生的成绩。
删(删除数据):
从数据库中移除现有的数据记录。
# 连接数据库
conn = sqlite3.connect('student.db')
# 游标
cur = conn.cursor()
# 删除数据
cur.execute('DELETE FROM student WHERE name = ?', ('小狗',))
#关闭连接
conn.commit()
conn.close()
解释:
-
DELETE FROM student
:这是 SQL 语句,用于从student
表中删除数据。 -
WHERE name = ?
:WHERE
子句用于指定删除条件。这里表示只删除name
列等于'小狗'
的记录。 -
?
:这是参数占位符,用于防止 SQL 注入攻击。它确保了传入的值不会被解释为 SQL 代码。 -
('小狗',)
:这是一个元组,包含要传递给 SQL 语句的参数。这里只有一个参数'小狗'
,所以元组后面有一个逗号。
改(更新数据):
更新数据库中现有的数据记录。
# 连接数据库
conn = sqlite3.connect('student.db')
# 游标
cur = conn.cursor()
# 更新数据
cur.execute('UPDATE students SET grade = ? WHERE name = ?', ('A', '小牛'))
#关闭连接
conn.commit()
conn.close()
解释:
-
UPDATE students
:指定要更新的表名为students
。 -
SET grade = ?
:将grade
列的值设置为提供的值(在这个例子中是'A'
)。 -
WHERE name = ?
:指定更新条件,只更新name
列值为'小牛'
的记录。 -
('A', '小牛')
:这是一个元组,提供了UPDATE
语句中?
占位符的值。
查(查询数据):
从数据库中检索数据。
conn = sqlite3.connect('student.db')
cur = conn.cursor()
# 查询数据
cur.execute('SELECT * FROM student') # 执⾏查询
rows = cur.fetchall() # 获取查询结果, 返回⼀个包含元组的列表
# 打印查询结果, 每个元组代表⼀⾏数据
for row in rows:
print(row)
# 关闭连接
conn.close()
解释:
查询代码使用 execute
方法执行了一条 SQL 查询命令,用于从 student
表中检索所有记录。SELECT * FROM student
是 SQL 语句,表示选择 student
表中的所有列和所有行。
这就是简单的数据库基础

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)