python入门系列十二(操作数据库)

1.引言

项目应用开发中,数据管理比如说数据存取需求是刚需,无论是什么类型,或者规模多大的应用,都需要数据存储管理。那么大多数业务类应用中,应用较多的两类数据库分别是NoSql数据库,比如redis;以及关系型数据库,比如mysql。

本篇文章将详细来看python如何实现redis,以及mysql数据库的操作?

2.操作数据库

2.1.redis数据库

redis是应用较多的NoSQL数据库,支持丰富的数据类型:字符串,链表,集合,有序集合,哈希等。在应用中可以支持丰富的应用场景:缓存,计数器,分布式锁,发布订阅等场景。

官网地址:redis.io/

下面来看在python中,如何整合操作redis服务?

2.1.1.准备环境

python中操作redis,有一个专门的库需要安装

shell 复制代码
pip install redis

# 如果默认安装不上,可以指定镜像源安装
pip install redis -i https://pypi.doubanio.com/simple

2.1.2.基本使用

通过刚才安装redis客户端库,连接基本示例:

python 复制代码
import redis

# 创建Redis连接(默认参数)
r = redis.Redis(
    host='localhost',  # Redis服务器地址
    port=6379,         # 端口,默认6379
    db=0,              # 数据库编号,默认0
    password=None,     # 密码(若无密码可省略)
    decode_responses=True  # 自动解码字节为字符串
)

# 测试连接是否成功
try:
    response = r.ping()
    print("连接成功" if response else "连接失败")
except redis.exceptions.ConnectionError:
    print("无法连接到Redis")

基本操作:

python 复制代码
# 基本操作
# 设置键值对
r.set('name', '小王')

# 获取值
name = r.get('name')
print(name)

2.1.3.连接池方式使用

在实际应用中,网络连接成本比较高,每次使用都去创建,使用完成销毁容易造成资源浪费,且影响应用性能。因此,我们可以使用池化的解决方案。像这样:

python 复制代码
import redis
from redis import ConnectionPool

# 创建连接池
pool = ConnectionPool(
    host='localhost',
    port=6379,
    max_connections=10,  # 最大连接数
    decode_responses=True
)

# 从池中获取连接
r_pool = redis.Redis(connection_pool=pool)

# 使用连接
r_pool.set('key', '小王')
print(r_pool.get('key'))

2.2.mysql数据库

2.2.1.准备环境

mysql是应用较多的关系型数据库,负责应用数据持久化。在python中,该如何操作使用mysql?我本地环境有一个爬虫数据库,下面来看如何操作它:

安装mysql客户端:

shell 复制代码
pip install pymysql

2.2.2.基本使用

我们可以建立连接,操作查询spider库中的商品表:good

python 复制代码
import pymysql

# 创建连接
conn = pymysql.connect(
    host='127.0.0.1',
    port=3310,
    user='root',
    password='admin',
    database='spider',
    charset='utf8mb4'  # 推荐字符集
)

# 基本CRUD操作
cur = conn.cursor()
#查询数据
sql = 'SELECT * FROM good'
cur.execute(sql)
rows = cur.fetchall()
for row in rows:
    print(row[1])

其它操作方式与查询数据类似,主要是编写sql脚本,以及注意事务管理即可。像这样:

python 复制代码
# 提交事务 , 回滚事务
try:
    conn.start_transaction()
    cursor.execute("INSERT INTO users (name) VALUES ('小王')")
    cursor.execute("UPDATE accounts SET balance = balance - 100 WHERE user_id = 1")
    conn.commit()  # 提交事务
except Error as e:
    conn.rollback()  # 回滚事务
    print(f"事务失败: {e}")
相关推荐
笑小枫3 分钟前
用 Claude Code 推翻重写笑小枫网站
java·人工智能·spring boot·ai编程
audyxiao00112 分钟前
人工智能顶会AAAI 2026论文分享|SlideBot:用于生成信息丰富、可靠、多模态幻灯片的多智能体框架
人工智能·大模型·aaai·智能体·幻灯片
用户9385156350715 分钟前
Workflow 与 Agent 之争:确定性执行与智能探索的深度剖析
人工智能
阿里云大数据AI技术22 分钟前
阿里云 EMR Serverless StarRocks(Stella 2.2.0) 发布:内表与湖表同时支持向量、全文与 AI Function,一条 SQL 完成多模态检索
人工智能
格林威23 分钟前
工业相机Chunk功能全解析:图像嵌入时间戳、编码器元数据(附堡盟C#代码)
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·工业相机
怪奇云呼军27 分钟前
闪电智能Voice Agent:ASR 首字延迟和最终识别延迟怎么测?t0-t3 埋点实战
人工智能·科技·ai·语音识别
冬哥聊AI34 分钟前
百万行代码里跑Claude Code?三面这题80%的人答不上来
人工智能
甄同学35 分钟前
第二十三篇:Tasks系统,Claude Code如何统一管理7种后台任务
人工智能
独隅36 分钟前
IntelliJ IDEA 接入多种AI大模型插件终极指南(2026.1 企业合规版)
java·人工智能·intellij-idea
有Li40 分钟前
EvoMDT:用于多癌种结构化临床决策的自进化多智能体系统文献速递/医学智能体前沿
人工智能·学习·分类·文献·医学生