Python操作MySQL实战:从基础到事务处理
需积分: 10 155 浏览量
更新于2024-09-10
收藏 277KB PDF 举报
"这篇教程详细介绍了如何使用Python操作MySQL数据库,包括建立连接、执行SQL语句、处理结果集、获取字段信息以及事务处理等。通过丰富的代码实例,适合Python初学者学习。"
在Python编程中,与MySQL数据库交互是一项常见的任务。Python提供了多种库来实现这一功能,如`MySQLdb`(本文示例中使用)和`pymysql`。以下是对文章内容的详细解释:
首先,为了使用`MySQLdb`库,你需要确保已经正确安装了这个库。在Windows环境下,你可以通过下载并安装MySQL-python的EXE安装文件来完成。
实例1展示了如何取得MySQL的版本信息:
```python
import MySQLdb as mdb
con = None
try:
con = mdb.connect('localhost', 'root', 'root', 'test')
cur = con.cursor()
cur.execute("SELECT VERSION()")
data = cur.fetchone()
print("Database version: %s" % data)
finally:
if con:
con.close()
```
这段代码创建了一个到MySQL服务器的连接,然后通过游标`cursor`执行SQL查询语句`SELECT VERSION()`,获取数据库的版本,并打印出来。
实例2演示了如何创建一个表并插入数据:
```python
import MySQLdb as mdb
import sys
con = mdb.connect('localhost', 'root', 'root', 'test')
with con:
cur = con.cursor()
# 创建 Writers 表
cur.execute("""
CREATE TABLE IF NOT EXISTS Writers (
Id INT PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(100)
)
""")
# 插入数据
cur.execute("INSERT INTO Writers (Name) VALUES ('John Doe')")
```
在这个例子中,`CREATE TABLE`语句用于创建名为`Writers`的表,包含一个自动递增的主键`Id`和一个`Name`字段。接着,`INSERT INTO`语句用来向`Writers`表中插入一条记录。
除了上述的基本操作,Python还可以执行更复杂的SQL语句,如更新和删除数据,获取表的所有字段名,甚至将图片等二进制数据插入数据库。在处理结果集时,可以使用`fetchone()`、`fetchall()`或`fetchmany()`方法。事务处理也很关键,可以确保一系列操作的原子性。例如:
```python
with con:
cur.execute("START TRANSACTION")
try:
cur.execute("UPDATE Writers SET Name='Jane Doe' WHERE Id=1")
con.commit()
except:
con.rollback()
```
这里使用`START TRANSACTION`开启一个事务,然后尝试更新数据,如果发生错误,则通过`rollback`回滚事务,确保数据一致性。
Python与MySQL的结合提供了强大的数据处理能力,使得开发者可以方便地进行数据库操作。通过学习这些基础实例,初学者可以快速掌握Python操作MySQL的基本技巧,为进一步的数据库开发打下坚实的基础。
2018-03-15 上传
2017-07-22 上传
2021-01-20 上传
lan_ceshi
- 粉丝: 1
- 资源: 10
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫