[Python进阶] Python操作MySQL数据库:pymysql

发布时间:2024年01月15日

7.7 操作MySQL数据库:pymysql

7.7.1 准备工作(创建mysql数据库)

PHPStudy介绍:
phpstudy是一款非常有用的PHP开发工具,旨在帮助开发者更加便捷地进行PHP程序的开发与调试。它提供了一个友好的图形用户界面,使得用户能够方便地进行配置和管理本地的PHP开发环境。
phpstudy还提供了一些实用的功能和工具,帮助开发者更加高效地编写和调试PHP程序。它包含了代码编辑器,用户可以方便地编写和编辑PHP代码。并且,phpstudy还内置了调试工具,可以帮助开发者定位和解决程序中的Bug。此外,phpstudy还提供了数据库管理工具,使得开发者能够方便地管理和操作MySQL数据库。
总之,phpstudy是一款非常有用的PHP开发工具。它提供了快速搭建开发环境的能力,并且提供了许多实用的功能和工具,帮助开发者更加高效地编写和调试PHP程序。
Navicat Premium介绍:
Navicat Premium是一款数据库管理工具,它提供了方便快捷的数据库管理和开发功能,支持多种数据库类型,包括MySQL、PostgreSQL、Oracle等等。
Navicat Premium具有直观的图形用户界面和强大的功能,可以帮助用户轻松地创建、编辑和管理数据库,同时提供了数据导入、导出、同步和备份功能,使得数据的处理更加高效和灵活。
此外,Navicat Premium还支持多种语言,可以轻松适应不同地区和领域的需求。总的来说,Navicat Premium是一款功能强大、易用可靠的数据库管理工具。
下载安装并启动MySQL数据库:
1、进入PHPStudy官网:https://www.xp.cn/download.html
2、下载PHPStudy并安装
3、启动PHPStudy中首页,点击启动MySQL,如下图:
在这里插入图片描述

4、此时,PHPStudy已经自动创建了MySQL数据库,用户和密码可以在数据库页面查看。如下图:
在这里插入图片描述

5、下载并安装Navicat Premium(MySQL数据库可视化操作工具)
6、安装pymysql库:

pip install pymysql

7、通过Navicat Premium连接刚才创建的数据库,创造一些测试表和数据进去。

7.7.2 用Python操作MySQL数据库

7.7.2.1 连接数据库
import pymysql

db = pymysql.connect(host="localhost", user="root", password="root", database="mysql")  # 连接
cursor = db.cursor()  # 创建游标
cursor.execute("SELECT VERSION()")  # 执行查询
# 获取查询结果
print(f"Database version : {cursor.fetchone()[0]}")
db.close()  # 关闭连接
7.7.2.2 创建表
import pymysql

db = pymysql.connect(host="localhost", user="root", password="root", database="mysql")  # 连接
cursor = db.cursor()  # 创建游标
cursor.execute('DROP TABLE IF EXISTS employee')  # 使用execute()方法执行SQL,如果表存在则将其删除
# 使用预处理语句创建表
sql = """CREATE TABLE `employee` (
  `first_name` varchar(255) DEFAULT NULL COMMENT '姓',
  `last_name` varchar(255) DEFAULT NULL COMMENT '名',
  `age` int(11) DEFAULT NULL COMMENT '年龄',
  `sex` varchar(255) DEFAULT NULL COMMENT '性别',
  `income` varchar(255) DEFAULT NULL COMMENT '收入'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
"""
cursor.execute(sql)  # 执行SQL语句
db.close()  # 关闭数据库连接
7.7.2.3 表_插入数据
import pymysql

db = pymysql.connect(host="localhost", user="root", password="root", database="mysql")  # 连接
cursor = db.cursor()  # 创建游标
sql = "INSERT INTO employee(first_name, last_name, age, sex, income) VALUES ('张', '三', 38, '女', 15000)"  # SQL语句:向数据表中插入数据
try:
    cursor.execute(sql)  # 执行SQL语句
    db.commit()  # 提交事务到数据库执行
except:
    db.rollback()  # 如果发生错误则执行回滚操作
db.close()  # 关闭数据库连接
7.7.2.4 表_查询数据
import pymysql

db = pymysql.connect(host="localhost", user="root", password="root", database="mysql")  # 连接
cursor = db.cursor()  # 创建游标
sql = "SELECT * FROM employee WHERE income > 1000 "  # SQL语句:查询
try:
    cursor.execute(sql)  # 执行SQL语句
    results = cursor.fetchall()  # 获取所有的记录列表
    for row in results:
        print(row)  # 打印列表元素
        first_name = row[0]  # 姓
        last_name = row[1]  # 名
        age = row[2]  # 年龄
        sex = row[3]  # 性别
        income = row[4]  # 收入
        print(first_name, last_name, age, sex, income)  # 打印列表元素
except:
print('无法获取到数据!')
db.close()  # 关闭数据库连接
7.7.2.5 表_修改数据
import pymysql

db = pymysql.connect(host="localhost", user="root", password="root", database="mysql")  # 连接
cursor = db.cursor()  # 创建游标
sql = 'UPDATE employee SET age = age + 5 WHERE sex = "女"'  # SQL语句,执行更新操作
try:
    cursor.execute(sql)  # 执行SQL语句
    db.commit()  # 提交到数据库执行
except:
    db.rollback()  # 发生错误时回滚
db.close()  # 关闭数据库连接
7.7.2.6 表_删除数据
import pymysql

db = pymysql.connect(host="localhost", user="root", password="root", database="mysql")  # 连接
cursor = db.cursor()  # 创建游标
sql = 'DELETE FROM employee WHERE income > 5000 AND age >35'  # SQL语句,执行删除操作
try:
    cursor.execute(sql)  # 执行SQL语句
    db.commit()  # 提交到数据库执行
except:
    db.rollback()  # 发生错误时回滚
db.close()  # 关闭数据库连接

7.7.3 问题及报错

报错1:使用Navicat连接数据库后发现看不到需要操作的数据库或者使用Python连接数据库的时候报错:Access denied for user ‘root’@‘%’ to database ‘netai_test’
原因:这是由于创建数据库后没有对用户授权,使用户可以访问数据库的原因。但是本地访问可以。
处理:打开Navicat,创建以root用户的连接,然后在要操作的数据库中新建查询,执行如下语句:grant all on (数据库名).* to ‘(用户)’@‘%’ identified by ‘(用户密码)’ with grant option;

文章来源:https://blog.csdn.net/crleep/article/details/135597309
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。