Python操作MySQL实战:从基础到事务处理
需积分: 10 8 浏览量
更新于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的基本技巧,为进一步的数据库开发打下坚实的基础。
339 浏览量
2023-10-26 上传
2024-09-26 上传
2023-04-01 上传
2023-03-31 上传
2023-04-24 上传
2023-05-18 上传
lan_ceshi
- 粉丝: 1
- 资源: 10
最新资源
- [电子商务]KGOGOMALL 网上商城系统 v5.1_kgogomall.rar
- java源码干货-android-resources:Android开发资源
- 毕设之智慧多媒体教室系统
- Android 随手记记账应用源码.zip
- 关于电子功用-便携式电子装置及其采用的芯片卡固持结构的说明分析.rar
- chargebee-samples:Chargebee示例应用程序
- microservices-taiga:基于微服务架构的系统
- 熊叔叔的生日派对flash动画
- Python库 | mypy-boto3-amplify-1.18.9.tar.gz
- nulecule-go:nulecule规范实现的golang端口
- 蓝奏云下载页源码.zip
- node-v16.4.1-linux-arm64.tar.gz
- 语音贩卖机-arspro
- CSSDemo:CSS学习笔记
- 课堂案例二.rar
- djangoproject.jp:djangoproject.jp的源代码