Python 3.x 连接数据库示例(pymysql 方式)
在现代软件开发中,数据库连接是必不可少的一部分。Python 3.x 作为一种高级编程语言,也提供了各种数据库连接的方式,其中最常用的是使用 pymysql 模块。本文将详细介绍如何使用 pymysql 模块连接 MySQL 数据库,并对其进行增、删、改、查的操作。
1. 安装 pymysql 模块
在使用 pymysql 模块前,需要先安装它。我们可以使用 pip 工具来进行安装:
```
pip install pymysql
```
2. 连接 MySQL 数据库
连接 MySQL 数据库前,需要先创建一个数据库和一张表。我们可以使用 MySQL 命令行工具进行操作:
```
mysql> CREATE DATABASE testdb;
mysql> USE testdb;
mysql> CREATE TABLE user (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT(11) NOT NULL,
PRIMARY KEY (id)
);
```
在创建完成数据库和表后,我们就可以使用 pymysql 模块连接到 MySQL 数据库了。具体连接方式如下:
```
import pymysql
# 打开数据库连接
db = pymysql.connect("localhost", "root", "password", "testdb")
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 执行 SQL 语句
cursor.execute("SELECT VERSION()")
# 获取一条数据
data = cursor.fetchone()
print("Database version : %s " % data)
# 关闭数据库连接
db.close()
```
上述代码中,我们首先使用 pymysql 的 connect() 方法连接到本地的 MySQL 数据库,其中 "localhost" 表示本地主机,"root" 表示用户名,"password" 表示密码,"testdb" 表示数据库名。接着,使用 cursor() 方法创建一个游标对象 cursor,用于执行 SQL 语句。在这里,我们执行了一个查询数据库版本的 SQL 语句,然后使用 fetchone() 方法获取一条数据。最后,使用 close() 方法关闭数据库连接。
3. 插入数据
插入数据是我们使用数据库最常见的操作之一。我们可以使用 pymysql 的 execute() 方法来执行插入数据的 SQL 语句:
```
# 打开数据库连接
db = pymysql.connect("localhost", "root", "password", "testdb")
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# SQL 插入语句
sql = "INSERT INTO user(name, age) VALUES ('Mike', 20)"
try:
# 执行 SQL 语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 发生错误时回滚
db.rollback()
# 关闭数据库连接
db.close()
```
上述代码中,我们首先连接到 testdb 数据库,并创建一个游标对象 cursor。接着,我们定义了一个插入数据的 SQL 语句,使用 execute() 方法执行该语句。如果插入成功,我们就使用 commit() 方法提交到数据库中。如果发生错误,我们就使用 rollback() 方法回滚。最后,使用 close() 方法关闭数据库连接。
4. 更新数据
更新数据也是我们常见的操作之一。我们可以使用 pymysql 的 execute() 方法来执行更新数据的 SQL 语句:
```
# 打开数据库连接
db = pymysql.connect("localhost", "root", "password", "testdb")
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# SQL 更新语句
sql = "UPDATE user SET age = age + 1 WHERE name = 'Mike'"
try:
# 执行 SQL 语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 发生错误时回滚
db.rollback()
# 关闭数据库连接
db.close()
```
上述代码中,我们首先连接到 testdb 数据库,并创建一个游标对象 cursor。接着,我们定义了一个更新数据的 SQL 语句,使用 execute() 方法执行该语句。如果更新成功,我们就使用 commit() 方法提交到数据库中。如果发生错误,我们就使用 rollback() 方法回滚。最后,使用 close() 方法关闭数据库连接。
5. 删除数据
删除数据也是我们常见的操作之一。我们可以使用 pymysql 的 execute() 方法来执行删除数据的 SQL 语句:
```
# 打开数据库连接
db = pymysql.connect("localhost", "root", "password", "testdb")
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# SQL 删除语句
sql = "DELETE FROM user WHERE name = 'Mike'"
try:
# 执行 SQL 语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 发生错误时回滚
db.rollback()
# 关闭数据库连接
db.close()
```
上述代码中,我们首先连接到 testdb 数据库,并创建一个游标对象 cursor。接着,我们定义了一个删除数据的 SQL 语句,使用 execute() 方法执行该语句。如果删除成功,我们就使用 commit() 方法提交到数据库中。如果发生错误,我们就使用 rollback() 方法回滚。最后,使用 close() 方法关闭数据库连接。
6. 查询数据
查询数据也是我们常见的操作之一。我们可以使用 pymysql 的 execute() 方法来执行查询数据的 SQL 语句,并使用 fetchall() 方法获取所有数据:
```
# 打开数据库连接
db = pymysql.connect("localhost", "root", "password", "testdb")
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# SQL 查询语句
sql = "SELECT * FROM user"
try:
# 执行 SQL 语句
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
for row in results:
id = row[0]
name = row[1]
age = row[2]
# 打印结果
print("id=%d,name=%s,age=%d" % (id, name, age))
except:
print("Error: unable to fetch data")
# 关闭数据库连接
db.close()
```
上述代码中,我们首先连接到 testdb 数据库,并创建一个游标对象 cursor。接着,我们定义了一个查询数据的 SQL 语句,使用 execute() 方法执行该语句,并使用 fetchall() 方法获取所有数据。最后,我们遍历所有数据,并打印出结果。如果发生错误,我们就使用 print() 方法输出错误信息。最后,使用 close() 方法关闭数据库连接。