访问林子雨编著《数据采集与预处理》教材官网
本文介绍在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;