文章目录
-
- 1、了解游标Cursor
- [(1) 执行 SQL 语句](#(1) 执行 SQL 语句)
- (2)处理查询结果
- 2、python操作数据库的通用流程
- 3、使用SQLite
- (1)创建数据库文件
- (2)新增用户数据
- (3)查看用户数据
- (4)修改用户数据信息
- (5)删除用户信息
1、了解游标Cursor
在 Python 中操作数据库时,游标(Cursor) 是一个核心对象,用于执行 SQL 语句并处理结果。它类似于文件操作中的文件指针,允许你逐条遍历查询结果。以下是游标的详细作用和用法:
(1) 执行 SQL 语句
a、所有 SQL 命令(SELECT、INSERT、UPDATE、DELETE)都通过游标执行。
b、支持参数化查询,防止 SQL 注入。
(2)处理查询结果
a、逐条或批量获取查询结果集。
b、跟踪结果集中的当前位置。
2、python操作数据库的通用流程
开始--->创建connection-->获取cursor-->执行SQL语句,处理数据结果-->关闭cursor-->关闭connection-->结束
3、使用SQLite
python中已经内置了SQLite3,所以直接用import语句导入SQLite3模块。
(1)创建数据库文件
bash
# 创建SQLite数据库文件
import sqlite3
# 连接到SQLite数据库
# 数据库文件是data.db,不存在会自动在当前目录创建
conn = sqlite3.connect('data.db')
# 创建一个Cursor
cursor = conn.cursor()
# 执行一条sql语句,创建user表
cursor.execute('create table user(id int(10) primary key ,name varchar(20))')
# 关闭游标
cursor.close()
# 关闭connection
conn.close()

格式:
bash
# 安全写法:检查表是否存在
cursor.execute('''
CREATE TABLE IF NOT EXISTS user (
id INTEGER PRIMARY KEY, -- SQLite 推荐使用 INTEGER 类型主键
name TEXT -- TEXT 类型更灵活,无需指定长度
)
''')
(2)新增用户数据
bash
# 插入数据
# 方法一:使用 execute() + 占位符 ?
name = "Alice"
cursor.execute("insert into user (id, name) VALUES (?, ?)", (1, name))
# 方法二:使用insert into 表名(字段名1,字段名2) values (字段值1, 字段值2)
cursor.execute('insert into user(id, name) values ("2", "Bob")')
(3)查看用户数据
bash
# 执行查询语句
cursor.execute('select * from user')
# 获取查询结果集中的下一条记录
cursor.fetchone()
# 获取指定数量的记录
cursor.fetchmany(2) # 获取两条记录
# 获取结果集的所有结果,返回列表
cursor.fetchall()
查询所有的记录:
(4)修改用户数据信息
bash
import sqlite3
conn = sqlite3.connect('data.db')
cursor = conn.cursor()
cursor.execute('update user set name = ? where id = ?', ('MR', 1))
cursor.execute('select * from user')
result1 = cursor.fetchall()
print(result1)
# 关闭游标
cursor.close()
# 提交事务(重要!)
conn.commit()
# 关闭connection
conn.close()
输出结果为:
(5)删除用户信息
bash
import sqlite3
conn = sqlite3.connect('data.db')
cursor = conn.cursor()
cursor.execute('delete from user where id = ?', (1,))
cursor.execute('select * from user')
result1 = cursor.fetchall()
print(result1)
# 关闭游标
cursor.close()
# 提交事务(重要!)
conn.commit()
# 关闭connection
conn.close()
输出结果: