在Linux中使用Python操作MySQL数据库

大数据学习路线图

访问林子雨编著《数据采集与预处理》教材官网
本文介绍在Linux中使用Python操作MySQL数据库。

安装MySQL数据库

在Linux系统中安装和使用MySQL,可以参考教程“Ubuntu安装MySQL及常用操作
主要注意的是,安装好MySQL数据库以后,在使用过程中可能会出现问题,就需要卸载和重装MySQL数据库,可以参考博客“卸载和重装MySQL数据库”。

在MySQL中创建数据库和表

打开一个Linux终端,输入如下命令进入MySQL Shell环境:

service mysql start  # 启动MySQL
mysql -u root -p  # 进入MySQL Shell环境

这时,会提示输入数据库密码,输入密码以后,就可以顺利进入MySQL Shell环境,如下图所示:

在MySQL Shell环境中,输入如下SQL语句创建数据库school:

mysql> CREATE DATABASE school;

需要注意的是,SQL语句中可以不用区分字母大小写。
可以使用如下SQL语句查看已经创建的所有数据库:

mysql> SHOW DATABASES;

创建好数据库school以后,可以使用如下SQL语句打开数据库:

mysql> USE school;

使用如下SQL语句创建一个表student:

mysql>CREATE TABLE student(
    -> sno char(5),
    -> sname char(10),
    -> ssex char(2),
    -> sage int);

使用如下SQL语句查看已经创建的表:

mysql> SHOW TABLES;

使用如下SQL语句向student表中插入两条记录:

mysql> INSERT INTO student VALUES('95001','王小明','男',21);
mysql> INSERT INTO student VALUES('95002','张梅梅','女',20);

使用如下SQL语句查询student表中的记录:

mysql> SELECT * FROM student;

上述操作的截图如下:

使用Python操作MySQL数据库

1.连接数据库

打开一个Linux终端,执行如下命令:

cd /usr/local/pycharm-community-2022.2.3
./pycharm.sh  #启动PyCharm

启动PyCharm以后,会弹出如下界面:

在上面界面中,选择打钩同意,然后点击“Continue”,会出现如下界面:

在上面界面中,点击“New Project”加号按钮,新建一个项目,会弹出如下界面:

在上面界面中,首先要设置“Location”,也就是项目的保存位置和名称,这里设置项目名称为pythonProject。然后要设置“Python Interpreter”(Python解释器),这里选择“Previously configured interpreter”,并点击界面右侧的“Add Interpreter”,再点击“Add Local Interpreter”,会弹出如下界面:

在上面界面中,在界面左侧点击“Conda Environment”,然后,在右侧的“Interpreter”下拉列表中,选择已经安装好的Python解释器,我们这里选择的是Anaconda3里面的Python3.8解释器(点击这里查看Anaconda的安装教程),然后,点击界面右下角的“OK”按钮,会返回到如下界面:

在上面界面中,点击界面右下角的“Create”按钮,会出现如下界面:

在界面的右侧区域,是PyCharm默认创建的Python代码文件main.py,这个代码文件里面已经写好了一个“print_hi”函数,会打印出“Hi,PyCharm”。现在,可以在main.py代码区域单击鼠标右键,在弹出的菜单中点击“Run main”,就可以运行代码文件,运行成功以后,就可以在界面底部区域看到程序运行结果,如下图所示:

通过上面测试以后,下面我们就可以正式开始创建操作MySQL数据库的代码文件了。
如下图所示,在PyCharm工作界面中,在左侧的项目管理区域,在项目名称“pythonProject”上单击鼠标右键,在弹出的菜单中选择“New”,再在弹出的菜单中选择“Python File”。

然后会弹出如下界面,可以在文件名称框中输入文件名“mysql1”,然后按回车键,就可以创建代码文件mysql1.py了。

在mysql1.py中输入如下代码:

# mysql1.py
import pymysql.cursors

# 连接数据库
connect = pymysql.Connect(
    host='localhost',
    port=3306,
    user='root',  # 数据库用户名
    passwd='123456',  # 密码
    db='school',
    charset='utf8'
)

# 获取游标
cursor = connect.cursor()

# 执行SQL查询
cursor.execute("SELECT VERSION()")

# 获取单条数据
version = cursor.fetchone()

# 打印输出
print("MySQL数据库版本是:%s" % version)

# 关闭数据库连接
connect.close()

这时,在mysql1.py代码区域的第2行代码"import pymysql.cursors"下面出现了波浪线,说明Python无法识别pymysql这个模块,因此,我们必须首先安装pymysql模块。
如下图所示,在PyCharm开发界面中单击“File”-->"Settings..."。

如下图所示,在左侧区域,选中“Project:pythonProject”下面的“Python Interpreter”,在右侧区域点击“+”加号。

然后会出现如下所示界面,在搜索框中输入“pymysql”进行模块搜索。搜索到pymysql模块以后,右侧区域会显示该模块的相关信息,然后,可以点击界面左下角的“Install Package”按钮,开始安装pymysql模块。

pymysql模块安装成功以后,如下图所示,会在界面底部显示安装成功的提示信息:Package 'pymysql' installed successfully。

然后,如下图所示,点击界面左上角的关闭按钮,关闭该窗口。

然后,会返回到如下所示界面,在这个界面的右侧区域,可以看到,已经可以找到一个名称为pymysql的模块,底部还有安装成功的提示信息:Package 'pymysql' installed successfully。然后,点击界面底部的“OK”按钮。

返回到PyCharm开发界面以后,在mysql1.py代码区域单击鼠标右键,在弹出的菜单中点击“Run mysql1”,运行mysql1.py代码文件。运行成功以后,就可以看到MySQL的版本信息,如下图所示:

2.创建表

在school数据库中创建一个表student,具体代码如下:

# mysql2.py
import pymysql.cursors

# 连接数据库
connect = pymysql.Connect(
    host='localhost',
    port=3306,
    user='root',  # 数据库用户名
    passwd='123456',  # 密码
    db='school',
    charset='utf8'
)

# 获取游标
cursor = connect.cursor()

# 如果表存在,则先删除
cursor.execute("DROP TABLE IF EXISTS student")

# 设定SQL语句

sql = """
create table student(
    sno char(5),
    sname char(10),
    ssex char(2),
    sage int);
"""

# 执行SQL语句
cursor.execute(sql)

# 关闭数据库连接
connect.close()

执行完mysql2.py代码文件以后,可以到MySQL Shell环境中,使用如下命令查看是否存在student表:

mysql> USE school;
mysql> SHOW TABLES;

3.插入数据

把下面两行数据插入student表中:
('95001','王小明','男',21)
('95002','张梅梅','女',20)
具体代码如下:

# mysql3.py
import pymysql.cursors

# 连接数据库
connect = pymysql.Connect(
    host='localhost',
    port=3306,
    user='root',  # 数据库用户名
    passwd='123456',  # 密码
    db='school',
    charset='utf8'
)

# 获取游标
cursor = connect.cursor()

# 插入数据
sql = "INSERT INTO student(sno,sname,ssex,sage) VALUES ('%s', '%s', '%s', %d)"
data1 = ('95001','王小明','男',21)
data2 = ('95002','张梅梅','女',20)
cursor.execute(sql % data1)
cursor.execute(sql % data2)
connect.commit()
print('成功插入数据')

# 关闭数据库连接
connect.close()

执行完mysql3.py代码文件以后,可以到MySQL Shell环境中,使用如下命令查看student表中是否多了两条记录:

mysql> SELECT * FROM student;

4.修改数据

把学号为“95002”的学生的年龄修改为21岁,具体代码如下:

# mysql4.py
import pymysql.cursors

# 连接数据库
connect = pymysql.Connect(
    host='localhost',
    port=3306,
    user='root',  # 数据库用户名
    passwd='123456',  # 密码
    db='school',
    charset='utf8'
)

# 获取游标
cursor = connect.cursor()

# 修改数据
sql = "UPDATE student SET sage = %d WHERE sno = '%s' "
data = (21, '95002')
cursor.execute(sql % data)
connect.commit()
print('成功修改数据')

# 关闭数据库连接
connect.close()

执行完mysql4.py代码文件以后,可以到MySQL Shell环境中,使用如下命令查看student表中的记录是否被修改:

mysql> SELECT * FROM student;

5.查询数据

找出学号为“95001”的学生的具体信息,具体代码如下:

# mysql5.py
import pymysql.cursors

# 连接数据库
connect = pymysql.Connect(
    host='localhost',
    port=3306,
    user='root',  # 数据库用户名
    passwd='123456',  # 密码
    db='school',
    charset='utf8'
)

# 获取游标
cursor = connect.cursor()

# 查询数据
sql = "SELECT sno,sname,ssex,sage FROM student WHERE sno = '%s' "
data = ('95001',)    #元组中只有一个元素的时候需要加一个逗号
cursor.execute(sql % data)
for row in cursor.fetchall():
    print("学号:%s\t姓名:%s\t性别:%s\t年龄:%d" % row)
print('共查找出', cursor.rowcount, '条数据')

# 关闭数据库连接
connect.close()

6.删除数据

删除学号为“95002”的学生记录,具体代码如下:

# mysql6.py
import pymysql.cursors

# 连接数据库
connect = pymysql.Connect(
    host='localhost',
    port=3306,
    user='root',  # 数据库用户名
    passwd='123456',  # 密码
    db='school',
    charset='utf8'
)

# 获取游标
cursor = connect.cursor()

# 删除数据
sql = "DELETE FROM student WHERE sno = '%s'"
data = ('95002',)  #元组中只有一个元素的时候需要加一个逗号
cursor.execute(sql % data)
connect.commit()
print('成功删除', cursor.rowcount, '条数据')

# 关闭数据库连接
connect.close()

执行完mysql6.py代码文件以后,可以到MySQL Shell环境中,使用如下命令查看student表中的记录是否被删除:

mysql> SELECT * FROM student;