Python作为常用的后端开发语言,经常需要和数据库配合完成数据存储、查询等工作,掌握数据库操作是Python入门阶段的重要技能。不同数据库的连接方式略有差异,但整体操作逻辑基本一致。

操作前的环境准备
在开始连接数据库之前,需要先完成两项基础准备工作。首先是安装对应数据库的Python驱动包,比如操作MySQL需要安装pymysql,操作SQLite不需要额外安装驱动,Python标准库已经内置。其次是确认数据库服务处于运行状态,并且已经创建了待操作的数据库和对应的用户账号,记录好数据库地址、端口、用户名、密码、数据库名这些信息。
Python数据库操作基本流程
Python操作数据库的核心流程可以分为五个步骤,具体如下:
- 导入对应的数据库驱动模块
- 建立数据库连接,获取连接对象
- 创建游标对象,用于执行SQL语句
- 执行SQL语句,处理返回结果
- 关闭游标和连接,释放资源
不同类型数据库操作示例
SQLite数据库操作示例
SQLite是轻量级嵌入式数据库,适合入门练习,不需要单独安装数据库服务,操作示例如下:
import sqlite3
# 1. 建立连接,如果文件不存在会自动创建
conn = sqlite3.connect('test.db')
# 2. 创建游标
cursor = conn.cursor()
# 3. 执行建表SQL
create_table_sql = '''CREATE TABLE IF NOT EXISTS user (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER
)'''
cursor.execute(create_table_sql)
# 4. 插入数据
insert_sql = "INSERT INTO user (name, age) VALUES (?, ?)"
cursor.execute(insert_sql, ('张三', 25))
# 提交事务,否则插入的数据不会生效
conn.commit()
# 5. 查询数据
cursor.execute("SELECT * FROM user")
result = cursor.fetchall()
print("查询结果:", result)
# 6. 关闭资源
cursor.close()
conn.close()
MySQL数据库操作示例
操作MySQL需要先安装pymysql驱动,安装命令为pip install pymysql,操作示例如下:
import pymysql
# 1. 建立数据库连接
conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='123456',
database='test_db',
charset='utf8mb4'
)
# 2. 创建游标
cursor = conn.cursor()
# 3. 执行建表SQL
create_table_sql = '''CREATE TABLE IF NOT EXISTS user (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT
)'''
cursor.execute(create_table_sql)
# 4. 插入数据
insert_sql = "INSERT INTO user (name, age) VALUES (%s, %s)"
cursor.execute(insert_sql, ('李四', 30))
conn.commit()
# 5. 查询数据
cursor.execute("SELECT * FROM user")
result = cursor.fetchall()
print("查询结果:", result)
# 6. 关闭资源
cursor.close()
conn.close()
操作注意事项
在实际操作过程中需要注意以下几点:
- 执行增删改操作后必须调用
commit()方法提交事务,否则操作不会生效,查询操作不需要提交事务 - SQL语句中的参数不要直接拼接字符串,使用参数化查询避免SQL注入风险
- 操作完成后一定要关闭游标和连接,避免资源泄露,也可以使用上下文管理器自动关闭资源
- 如果执行SQL语句出现错误,需要捕获异常并处理,避免程序直接崩溃
使用上下文管理器操作MySQL的示例:
import pymysql
try:
with pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='123456',
database='test_db',
charset='utf8mb4'
) as conn:
with conn.cursor() as cursor:
cursor.execute("SELECT * FROM user")
result = cursor.fetchall()
print("查询结果:", result)
except Exception as e:
print("操作出现异常:", e)