Java和Python对MySQL的增删改查

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: Java和Python对MySQL的增删改查

前言:

相信大家都知道怎么在MySQL里面使用SQL语句对数据库进行一个增删改查。

小伙伴们有没有想过有没有用其他语言对MySQL进行操作呢?

这个回答肯定是有的,就比如今天带给大家的两种语言操作MySQL进行增删改查!!!

image.png



经过我上篇的 Java和Python各自链接MySQL的方法相信大家应该掌握了这两种语言链接MySQL的方法了,而今天带给大家的文章就是通过Java和Python对MySQL的增删改查。


Java对MySQL的操作

环境配置

使用工具:

IDEA,MySQL-8.0,MySQL驱动(mysql-connector-java-8.0.27)等。


其他配置:


这个可以参考我的上一篇文章,上篇有具体的环境配置介绍哦!


增添操作

注:Java下面的测试用例都是使用DriverManager链接MySQL进行增删改查操作


首先在使用Java链接到MySQL后我们能使用java操作我们所需要的功能。


那我们首先来进行MySQL的增添操作。


 

public static void main(String[] args) throws SQLException {
        Driver driver = new com.mysql.cj.jdbc.Driver();
        String url = "jdbc:mysql://localhost:3306/表名";
        String user = "root";
        String password = "数据库密码";
        DriverManager.registerDriver(driver);
        Connection conn = DriverManager.getConnection(url,user,password);
        System.out.println(conn);
        //对MySQL数据库的添加操作
        //预编译sql语句
        //注:dl是一个数据库表名
        String sql = "INSERT INTO dl (账号,密码)  VALUE (?,?)";
        PreparedStatement preparedStatement =  conn.prepareStatement(sql);
        //填充占位
        preparedStatement.setInt(1,123);
        preparedStatement.setInt(2,123);
        //执行操作
        preparedStatement.execute();
        //关闭操作
        preparedStatement.close();
        conn.close();
        System.out.println("添加成功!");
    }



结果:

image.png



及操作成功!!!


删除操作

在Java里面对MySQL的增删改操作都类似的,只需要更换操作的SQL语句就可!!!


代码段:


public class sql_delete {
    public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要删除的账号:");
        int user = scanner.nextInt();
        Connection connection =  JDBCtils.getConnection();
        String sql = "DELETE FROM dl WHERE 账号 = ? ;";
        PreparedStatement ps  = connection.prepareStatement(sql);
        ps.setInt(1,user);
        ps.execute();
        JDBCtils.closeREsource(connection,ps);
        System.out.println("删除成功!");
    }
}


结果:

image.png



我们能看到表中的123已经被删除了!


修改操作

修改也是换汤不换药!


原来的表内容:

image.png



我们操作就第一个账号为666的吧!

代码段:


public class alter_sql {
    public static void main(String[] args) throws Exception{
        Connection conn = JDBCtils.getConnection();//使用写好了的链接工具返回链接
        Scanner scanner = new Scanner(System.in);//创建输入
        System.out.println("请输入需要修改的账号:");
        int zh = scanner.nextInt();
        System.out.println("请输入需要修改的密码:");
        int mm = scanner.nextInt();
        String sql = "UPDATE  dl SET 密码 = ? WHERE 账号 = ?";//SQL语句
        PreparedStatement ps =  conn.prepareStatement(sql);//执行SQL语句
        ps.setInt(1,zh);//填充占位符
        ps.setInt(2,mm);
        ps.execute();//返回是否有结果集
        JDBCtils.closeREsource(conn,ps);//导入之前写好的conn和ps关闭功能函数。
        System.out.println("修改成功!");
    }
}



执行结果:


image.png


运行成功,表示代码完全执行!!!


查询操作

到了今天的重头戏了——使用Java来对MySQL进行查询并返回到Java中。


这个步骤和上面的增删改可能有一些地方不同。


我我来给大家一步步的讲解哦,如果有哪个地方不对还请下伙伴们斧正哦!


通过上面的代码,相信大家都能看到在执行操作的时候都会有一个ps.excute这个代码,而其是用在对MySQL的增删改操作时使用的。


而增删改和查询的操作不同的地方就是使用不同的excute对MySQL进行操作。所以在这就需要引入一个新的名称—executeQuery。


executeQuery是Java操作MySQL查询时使用的功能函数!


补充:


executeQuery:主要执行select语句,返回值为ResultSet结果集。


execute:运行sql语句,返回值为是否有结果集。


结果集对象的创建:


ResultSet  resultSet=  ps.executeQuery();


通过executeQuery( )返回的结果集对象后,我们能使用resultSet.next()来进行一个判断是否当前行有返回结果集。我们可以通过来输出MySQL的查询结果。


   

if(resultSet.next()){//next()判断结果集是否有下一条数据。
            int id =  resultSet.getInt(1);
            int mima = resultSet.getInt(2);
            System.out.println("id = "+ id +",mima:"+mima);
        }else {
            System.out.println("没有该数据!!");
        }


输出所有数据使用while即可。


     

while(resultSet.next()){//next()判断结果集是否有下一条数据。
            int id =  resultSet.getInt(1);
            int mima = resultSet.getInt(2);
            System.out.println("id = "+ id +",mima:"+mima);
        }else {
            System.out.println("没有该数据!!");
        }


完整测试代码:


 

public static void main(String[] args) throws Exception{
        Connection conn =  JDBCtils.getConnection();
        String sql = "select 账号,密码 from dl where 账号 = 666 ";
        PreparedStatement ps =  conn.prepareStatement(sql);
        //换方法 ,executeQuery()查询数据库用的方法
        ResultSet  resultSet=  ps.executeQuery();
        if(resultSet.next()){//next()判断结果集是否有下一条数据。
            int id =  resultSet.getInt(1);
            int mima = resultSet.getInt(2);
            System.out.println("id = "+ id +",mima:"+mima);
        }else {
            System.out.println("没有该数据!!");
        }
    }



测试结果:

image.png



Python对MySQL的操作

环境配置

使用工具:


Pycharm,MySQL—8.0,pymysql库。


其他配置:


这个可以参考我的上一篇文章,上篇有具体的环境配置介绍哦!


增添操作

通过上面的Java对MySQL进行增添操作,大家觉得Python是怎对MySQL进行添加操作的呢?


那么今天就给大家带来MySQL的增添操作!


工具包的导入:


import pymysql#Python链接MySQL的一个工具包。


创建链接:


本操作是在上一篇文章就介绍过了,不会的同学可以参考我的上一篇文章哦!


SQL语句的执行和提交:


相比于Java,Python在执行SQL语句后还会有一个commit。通过查询API我们直到commit的功能是 将更改提交到稳定存储。


请注意:


如果数据库支持自动提交特性,这必须在开始时关闭。可以提供一个接口方法来重新打开它。


   

cur.execute(sql)
        connection.commit()


在这里在给大家补充一个回滚功能—rollback(),在Python中当链接MySQL时如果没有链接成功的话我们选择的使用它。


让其进行一个回滚,直到链接成功。


rollback():这个方法是可选的,因为不是所有的数据库都提供事务支持。


如果数据库确实提供了事务,此方法将导致数据库回滚到任何挂起事务的开始。关闭连接而不首先提交更改将导致执行隐式回滚。


代码的演示:


#代码是我之前一个项目的部分代码,因为本文设计到数据库,所以就直接给大家拿出来做例子。
#在数据库中增加学生信息
def add_sql(stu):
    connection = get_connect()
    cur = connection.cursor(cursor=pymysql.cursors.DictCursor)
    sql = 'insert into student(学号,姓名,性别,电话) values("%s","%s","%s", "%s")'
    sid = stu['学号']
    name = stu['姓名']
    sex = stu['性别']
    iphone = stu['电话']
    try:
        cur.execute(sql%(sid,name,sex,iphone))
        connection.commit()
    except Exception as e:
        connection.rollback()
        raise e
    finally:
        connection.close()



这个结果的操作我就不给大家看了,大家可以自己试试哦。


删除操作

和Java类似Python的增删改都是需要对SQL语句进行改变,所以我就直接给大家上代码了。


import pymysql
s=int(input('输入学号;'))
conn = pymysql.connect(host='localhost',user = "root",passwd = "数据库密码",database=数据库名称)
cursor = conn.cursor()
sql = 'delete from student where 学号=%s'
try:
    cursor.execute(sql % s)
    conn.commit()
except Exception as e:
    conn.rollback()
    raise e
finally:
    conn.close()


修改操作

def xname():
    xh = int(input('学号:'))
    name = input('请输入姓名:')
    arg = (name,xh)
    sql = "update  student set 姓名 = '%s' where 学号 = %s "
    result = cur.execute(sql%arg)
    print(result)
    if result == 1:#判断是否修改成功,返回的是1或0.
        print('修改成功!')
    else:
        print('修改失败!')
    conn.commit()
    cur.close()
    conn.close()


查询操作

在Python中查询的话我们需要在游标的基础上接收结果集。


是通过fetchall,获取所有行。然后通过数据的可视化对用户进行展示即可。


我们来通过一个完整的例子来讲解查询操作:


import pymysql#导入数据库
s = input('请输入查询姓名:')
conn = pymysql.connect(host='localhost',user = "root",passwd = "数据库密码",database='stu')
cur = conn.cursor()#获取游标
sql = 'select * from student where 姓名 ="%s" ;'#创建SQL语句
cur.execute(sql%s)#准备SQL语句
f = cur.fetchall()#获取结果集
for i in f:#输出结果集
    print(i)
cur.close()#关闭游标
conn.commit()#提交事务
conn.close()#关闭连接


我们可以看一下我们的查询结果:


image.png

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
24天前
|
存储 Java 关系型数据库
个人成绩信息管理系统【GUI/Swing+MySQL】(Java课设)
个人成绩信息管理系统【GUI/Swing+MySQL】(Java课设)
20 0
|
24天前
|
存储 Java 关系型数据库
社区医院管理服务系统【GUI/Swing+MySQL】(Java课设)
社区医院管理服务系统【GUI/Swing+MySQL】(Java课设)
25 1
|
24天前
|
存储 Java 关系型数据库
实验室设备管理系统【GUI/Swing+MySQL】(Java课设)
实验室设备管理系统【GUI/Swing+MySQL】(Java课设)
17 0
|
24天前
|
存储 Java 关系型数据库
冬奥会传统文化管理系统【GUI/Swing+MySQL】(Java课设)
冬奥会传统文化管理系统【GUI/Swing+MySQL】(Java课设)
8 0
|
24天前
|
存储 Java 关系型数据库
学生宿舍管理系统【GUI/Swing+MySQL】(Java课设)
学生宿舍管理系统【GUI/Swing+MySQL】(Java课设)
19 0
|
6天前
|
SQL 关系型数据库 MySQL
Python与MySQL数据库交互:面试实战
【4月更文挑战第16天】本文介绍了Python与MySQL交互的面试重点,包括使用`mysql-connector-python`或`pymysql`连接数据库、执行SQL查询、异常处理、防止SQL注入、事务管理和ORM框架。易错点包括忘记关闭连接、忽视异常处理、硬编码SQL、忽略事务及过度依赖低效查询。通过理解这些问题和提供策略,可提升面试表现。
25 6
|
7天前
|
前端开发 Java Go
开发语言详解(python、java、Go(Golong)。。。。)
开发语言详解(python、java、Go(Golong)。。。。)
|
7天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
10天前
|
存储 索引 Python
python学习5-列表的创建、增删改查、排序
python学习5-列表的创建、增删改查、排序
|
15天前
|
监控 数据可视化 安全
智慧工地SaaS可视化平台源码,PC端+APP端,支持二开,项目使用,微服务+Java++vue+mysql
环境实时数据、动态监测报警,实时监控施工环境状态,有针对性地预防施工过程中的环境污染问题,打造文明生态施工,创造绿色的生态环境。
13 0
智慧工地SaaS可视化平台源码,PC端+APP端,支持二开,项目使用,微服务+Java++vue+mysql