Java和Python各自链接MySQL的方法(2)

最后

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

打开后是这样的界面:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

小伙伴们按照以上的方法下载安装即可。

注:因为MySQL官网页面会不断的更新,一些小伙伴可能找不到,大家只要记住找到倒数第三张图片上面的那个版本驱动即可下载!

MySQL驱动的配置:

首先我们需要在我们的IDEA里面新建一个项目,然后我们在src的同级目录下创建一个lib文件夹,将我们下载好的MySQL驱动解压到lib下面即可。

[^注意:在lib文件夹下面的文件是 jar类型的,并不是zip类型的文件!!!]:

在这里插入图片描述

当驱动放在指定位置后我们再在IDEA里面找到MySQL驱动,按照下图步骤慢慢完善即可:

在这里插入图片描述

在这里插入图片描述

点击即可!!!

到这里Java MySQL的驱动基本上算是配置好了,接下来就是要进行使用Java代码链接MySQL数据库了!!!

代码实现

在Java中有两个API可以链接数据库,分别是:DriverDriverManager

1.Driver的链接

首先创建驱动对象:

Driver driver = new com.mysql.cj.jdbc.Driver();

使用driver进行链接:

Connection conn = driver.connect(url,info);

完整代码:

public static void main(String[] args) throws SQLException {

Driver driver = new com.mysql.cj.jdbc.Driver();

String url = “jdbc:mysql://localhost:3306/数据库表名”;

Properties info = new Properties();

info.setProperty(“user”,“root”);

info.setProperty(“password”,“数据库密码”);

Connection conn = driver.connect(url,info);

System.out.println(conn);

}

运行结果:com.mysql.cj.jdbc.ConnectionImpxxxxxxx,表示成功运行!!!

2.DriverManager的链接

Driver一样创建驱动:

Driver driver = new com.mysql.cj.jdbc.Driver();

数据库的注册:

DriverManager.registerDriver(driver);//进行数据库注册

我们选用DriverManager三种链接方法里面的其中一个比较简单的连接方法:

Connection conn = DriverManager.getConnection(url,user,password);

完整代码:

public static Connection getConnection() throws Exception{

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);

return conn;

}

//关闭数据库的链接

public static void closeREsource(Connection conn, PreparedStatement ps){

try {

ps.close();

} catch (SQLException e) {

e.printStackTrace();

}

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

运行结果:com.mysql.cj.jdbc.ConnectionImpxxxxxxx,表示成功运行!!!

补充:DriverManager是Driver的升级版,Driver是Java链接MySQL最基础的方法。因为Driver不能解耦,所以逐渐被DriverManager所替代!

Java对数据库的链接就到这里了,接下来可能就带给大家Java对数据库表的增删改查了。

Python数据库的链接


介绍了Java的数据库链接,我们在来看看Python是怎么链接MySQL的吧。

环境配置

**使用工具:**Pycharm,MySQL—8.0,pymysql库。

pymysql的下载:

方法1:打开cmd,输入 pip install pymysql。即可安装完毕。

方法2:在Pycharm里面下载该库。(我博客之前写过怎么用Pycharm下载各种Python的库,不会的小伙伴可以去看看哦。)

环境配置完毕,接下来我们就进行具体的代码操作吧!!!

代码实现

首先导入pymysql

import pymysql

使用pymysql里面的功能方法conntect链接MySQL并创建对象。

conn = pymysql.connect(host=‘localhost’,user = “root”,passwd = “数据库密码”)

补充:connect的参数和作用!

| 参数 | 功能 |

| :-: | :-: |

| host | 服务器的主机地址。 |

| port | mysql数据库的端口号。 |

| user | 用户名 |

| password | 密码 |

| database | 操作的数据库名 |

| charset | 操作数据库使用的编码个数 |

接着使用conn获取游标。

cursor=conn.cursor()

紧接着使用cursor对MySQL进行操作。

cursor.execute(sql语句)

最后关闭游标和数据库的链接。

cursor.close()#先关闭游标

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

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

### MySQL Connector MySQL Connector/Python 的区别与使用场景 #### 1. **定义与开发背景** MySQL Connector 是一组由 MySQL 官方提供的数据库驱动程序集合,旨在帮助开发者轻松实现应用程序与 MySQL 数据库之间的交互。其中,`mysql-connector-python` 是专门为 Python 编程语言设计的一个子集[^1]。而更广义的 `mysql-connector` 则可能指代其他编程语言(如 Java、C++ 等)中的对应实现。 对于 Python 开发者而言,`mysql-connector-python` 提供了一种无需额外依赖即可快速集成 MySQL 功能的方式[^2]。 --- #### 2. **技术特性对比** | 特性 | `mysql-connector` (通用概念) | `mysql-connector-python` | |--------------------------|-------------------------------------|--------------------------------------| | **适用的语言** | 多种语言 | 专为 Python 设计 | | **官方支持程度** | 高 | 高 | | **是否纯 Python 实现** | 不一定 | 是 | | **安装复杂度** | 可能需要编译或其他本地库的支持 | 单一命令即可完成安装 | | **连接池支持** | 支持 | 支持 | | **跨平台兼容性** | 较高 | 极高 | --- #### 3. **具体差异分析** ##### (1)**实现方式** - `mysql-connector-python` 是完全基于 Python 的实现,这意味着它不需要任何外部 C 扩展或二进制文件来运行。这种特性使其非常适合在虚拟环境中部署,尤其是在隔离性强的应用场景下。 - 而传统的 `mysql-connector`(例如针对 C/C++ 或 Java 的版本),通常依赖于底层系统的动态链接库或者 JVM 运行时环境。这使得它们更适合那些对性能要求极高且允许绑定低级资源的操作场合。 ##### (2)**安装过程** - 对于 `mysql-connector-python` 来说,其安装极为简便,仅需一条 pip 命令即可完成全部设置[^2]: ```bash pip install mysql-connector-python ``` - 相较之下,某些非 Python 版本的 `mysql-connector` 可能涉及到复杂的构建步骤,甚至还需要手动配置系统级别的共享库路径等操作。 ##### (3)**API 接口风格** 尽管两者都提供了类似的 API 形式以便简化 SQL 查询处理逻辑,但由于目标受众不同,各自的设计哲学也有所侧重: - 在 Python 社区内广泛接受的习惯做法被融入到了 `mysql-connector-python` 中,比如上下文管理器模式(`with`)以及迭代游标的运用等等; - 其他语言版本可能会更加贴近该语言自身的惯用法,则未必能够直接移植过来。 --- #### 4. **典型应用场景划分** ##### (1)适合选用 `mysql-connector-python` 的情形 当项目主要围绕 Python 展开,并希望减少对外部工具链的依赖时,可以选择此选项。特别是以下几种情况尤为推荐: - Web 后端服务框架搭建阶段,例如 Flask/Django 结合 RESTful API 输出数据流; - ETL(Extract Transform Load)作业自动化过程中频繁读写关系型存储单元; - 敏捷团队内部快速原型验证环节,追求最小化初始投入成本的同时保持灵活性。 ##### (2)倾向于传统 `mysql-connector` 的领域 如果业务需求超出了单纯依靠解释型脚本来解决问题的能力范畴,则应考虑转向更为强大的解决方案——即采用适配相应宿主语言特性的专用客户端库形式呈现出来的经典形态下的 `mysql-connectors` 。这类应用包括但不限于: - 需要极致优化 I/O 性能的大规模并发事务管理系统; - 深入嵌入硬件层面控制循环的数据采集装置固件编写活动; - 跨异构计算节点同步状态信息传递机制建设任务。 --- ### 示例代码片段展示两种调用方法 以下是分别利用这两种方式进行基本查询演示的例子: #### 使用 `mysql-connector-python` ```python import mysql.connector conn = mysql.connector.connect( host='localhost', database='test_db', user='root', password='password' ) cursor = conn.cursor() cursor.execute("SELECT * FROM users LIMIT 5;") for row in cursor.fetchall(): print(row) cursor.close() conn.close() ``` #### 类似伪代码表示其他语言版 `mysql-connector` 假定这里讨论的是某种虚构但具有代表意义的高级静态类型语言 XLang ,那么大致结构如下所示: ```xlang // 导入库声明部分省略... Database db := NewMysqlConnection("tcp", "localhost:3306", "test_db", "root", "password") defer db.Close() // 自动释放资源句柄 rows, err := db.Query("SELECT * FROM users LIMIT ?", []interface{}{5}) if err != nil { panic(err.Error()) } columns := rows.Columns() values := make([]sql.RawBytes, len(columns)) scanslice := make([]interface{}, len(values)) for i := range values { scanslice[i] = &values[i] } for rows.Next() { if err := rows.Scan(scanslice...); err != nil { log.Fatal(err) } var value string for _, colData := range values { if colData == nil { value = "NULL" } else { value = string(colData[:]) } fmt.Println(value) } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值