Python小项目:从环境搭建到封装使用(每次从这里开始)
Python小项目从环境搭建到封装使用每次从这里开始在Python项目中操作MySQL是家常便饭但很多新手容易陷入“到处写连接、反复敲cursor.execute()”的泥潭。本文将从零开始带你完成一个整洁、可复用的MySQL操作项目涵盖环境检查、虚拟环境、依赖安装、数据库封装以及完整示例让你轻松上手。一、先检查Python是否安装在开始任何操作前确认系统已安装Python推荐3.6。打开终端CMD、PowerShell或Bash输入python--version或Linux/macOS下可能需用python3--version若正常输出版本号如Python 3.10.12说明Python已就绪。若提示命令未找到请先访问python.org下载安装。二、创建项目文件夹与入口文件为项目单独创建一个目录并在其中新建主程序文件例如index.pymkdirmy_projectcdmy_projecttouchindex.py# Linux/macOS# Windows: new-item index.py目录结构此时为my_project/ └── index.py后续所有代码将围绕这个文件夹展开。三、建立独立的Python虚拟环境强烈建议为每个项目创建独立的虚拟环境避免不同项目间的依赖冲突。使用Python自带的venv模块即可python-mvenv .venv.venv是虚拟环境目录名可自定义如venv但建议保持统一。创建完成后激活虚拟环境操作系统激活命令Windows (CMD).venv\Scripts\activate.batWindows (PowerShell).venv\Scripts\Activate.ps1macOS / Linuxsource .venv/bin/activate激活成功后终端提示符前会出现(.venv)表明当前正在使用隔离环境。四、安装MySQL驱动并封装数据库操作4.1 安装依赖在激活的虚拟环境中安装pymysql纯Python实现的MySQL驱动pipinstallpymysql同时导出依赖清单方便部署时一键安装pip freezerequirements.txt此时requirements.txt中会包含pymysql及其依赖。4.2 编写数据库封装类db.py在项目根目录下新建db.py封装一个通用的数据库操作类统一管理连接、执行SQL、提交事务并支持自动重连和with上下文管理。# db.pyimportpymysqlclassDB:极简数据库封装提供query/execute/execute_ddl方法支持with自动关闭def__init__(self,hostlocalhost,userroot,password,databasetest_db,charsetutf8mb4,autocommitFalse):self.config{host:host,user:user,password:password,database:database,charset:charset,cursorclass:pymysql.cursors.DictCursor,autocommit:autocommit,}self.connNonedef_get_conn(self):获取连接含自动重连机制pingifself.connisNone:self.connpymysql.connect(**self.config)else:try:self.conn.ping(reconnectTrue)# 检测连接存活断线自动重连except:self.connpymysql.connect(**self.config)returnself.conndef_execute(self,sql,argsNone,commitFalse):内部执行方法返回游标和受影响行数connself._get_conn()cursorconn.cursor()try:affectedcursor.execute(sql,args)ifcommit:conn.commit()returncursor,affectedexceptException:conn.rollback()raisefinally:# 注意不在此关闭游标让调用方在获取结果后自行关闭passdefquery(self,sql,argsNone):执行查询SELECT返回结果列表字典形式cursor,_self._execute(sql,args,commitFalse)resultcursor.fetchall()cursor.close()returnresultdefexecute(self,sql,argsNone):执行更新INSERT/UPDATE/DELETE返回(受影响行数, 自增ID)cursor,affectedself._execute(sql,args,commitTrue)last_idcursor.lastrowid cursor.close()returnaffected,last_iddefexecute_ddl(self,sql):执行表结构变更CREATE/ALTER/DROP自动提交cursor,_self._execute(sql,commitTrue)cursor.close()returnTruedefclose(self):显式关闭连接一般用with自动管理无需手动调用ifself.conn:self.conn.close()self.connNone# 支持 with ... as 语法def__enter__(self):returnselfdef__exit__(self,exc_type,exc_val,exc_tb):self.close()亮点说明_get_conn()内使用ping(reconnectTrue)实现自动重连Web服务无需频繁开关连接。query()返回字典列表直观易用。execute()返回影响行数和插入ID满足大多数写操作需求。支持with语句退出块自动关闭连接无需显式close()。五、项目目录结构一览此时你的项目文件夹应包含以下内容my_project/ ├── .venv/ # 虚拟环境目录不纳入版本控制 ├── db.py # 数据库封装类 ├── index.py # 主程序入口业务逻辑 ├── requirements.txt # 依赖清单 └── .env # 可选存放敏感配置如数据库密码.venv由venv生成无需手动修改。db.py通用的数据库工具可复制到其他项目复用。index.py编写具体业务逻辑调用db中的方法。requirements.txt记录依赖便于部署时复现环境。.env可选使用python-dotenv管理密码避免硬编码。六、完整示例在 index.py 中实现增删改查在index.py中我们将演示如何创建users表插入新用户查询所有用户按姓名更新年龄添加新字段修改表结构使用with自动管理连接。# index.pyfromdbimportDBdefmain():# 实例化数据库对象请替换为你的实际连接信息dbDB(hostlocalhost,userroot,passwordyour_password,databasetest_db)# 使用 with 自动管理连接退出时自动 closewithdb:# 1. 创建表若不存在db.execute_ddl( CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, age INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) )print(✅ 表 users 已准备就绪)# 2. 插入数据affected,new_iddb.execute(INSERT INTO users (name, age) VALUES (%s, %s),(张三,25))print(f✅ 插入成功影响行数{affected}新ID{new_id})# 3. 查询所有用户usersdb.query(SELECT * FROM users)print( 当前所有用户)foruinusers:print(f id{u[id]}, name{u[name]}, age{u[age]})# 4. 更新数据affected,_db.execute(UPDATE users SET age %s WHERE name %s,(26,张三))print(f✅ 更新成功影响行数{affected})# 5. 修改表结构增加 email 字段try:db.execute_ddl(ALTER TABLE users ADD COLUMN IF NOT EXISTS email VARCHAR(100))print(✅ 新增 email 列成功)exceptExceptionase:# 若 MySQL 版本不支持 IF NOT EXISTS忽略重复列错误ifDuplicate column nameinstr(e):print(ℹ️ email 列已存在无需重复添加)else:raisee# 6. 再次查询验证updated_userdb.query(SELECT * FROM users WHERE name %s,(张三,))ifupdated_user:print(f 更新后张三信息{updated_user[0]})if__name____main__:main()运行结果示例✅ 表 users 已准备就绪 ✅ 插入成功影响行数1新ID1 当前所有用户 id1, name张三, age25 ✅ 更新成功影响行数1 ✅ 新增 email 列成功 更新后张三信息{id: 1, name: 张三, age: 26, created_at: datetime.datetime(2026, 8, 15, 14, 30, 0), email: None}七、部署到Linux的快速指南当项目需要部署到Linux服务器时只需三步上传项目文件不含.venv到服务器。在服务器上创建并激活虚拟环境python3-mvenv .venvsource.venv/bin/activate安装依赖pipinstall-rrequirements.txt运行程序python index.py若使用了.env存放密码确保在服务器上创建该文件并填入正确配置。八、总结通过以上步骤你获得了一个整洁、可维护的Python MySQL操作环境独立虚拟环境隔离依赖避免冲突。统一封装db.py将连接、重连、事务、游标管理集中处理业务代码只需关心SQL本身。自动资源管理借助with语句无需手动关闭连接降低出错概率。易于扩展封装类支持所有标准SQL可轻松添加日志、性能监控等增强功能。这套方案适用于从小型脚本到中等规模Web应用的各类场景。现在你可以在自己的项目中放心地使用MySQL了

相关新闻

Java架构师的AI转型之路(中):Agent与编排体系实战

Java架构师的AI转型之路(中):Agent与编排体系实战

Java架构师的AI转型之路(中):Agent与编排体系实战 系列文章:总篇 上篇 中篇 下篇 接上篇 在上篇中,我聊了转型的动机和 Phase 1(AI工程基础夯实)的完整实践——从Prompt Engineering到RAG系统从0到1,再到Java+Python混合架构的搭建。 如果你已经跟着做到了这一步,…

2026/11/14 2:44:38 阅读更多 →
Windows打印服务无法启动?从原理到修复的完整排查指南

Windows打印服务无法启动?从原理到修复的完整排查指南

1. 问题引入:当打印机服务“罢工”时 办公室里最让人血压飙升的时刻之一,莫过于你急着打印一份重要文件,点击“打印”后,打印机却毫无反应。你检查了数据线、电源,甚至重启了打印机,但电脑上的打印机图标依…

2026/11/12 19:28:38 阅读更多 →
HTML5核心标签详解与前端开发实践指南

HTML5核心标签详解与前端开发实践指南

1. HTML基础与常用标签概述 HTML(HyperText Markup Language)作为网页开发的基石语言,其标签系统构成了互联网内容的骨架结构。从事前端开发十年来,我深刻体会到掌握HTML标签就像建筑师熟悉砖瓦——它们看似简单,但组合…

2026/11/13 4:17:28 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/14 5:13:29 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/14 5:13:29 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/14 5:13:29 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/13 22:08:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/14 2:41:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/14 5:13:29 阅读更多 →

日新闻

周新闻

月新闻