购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

任务1.4
Python和Java连接数据库

任务描述:认识并了解开发语言连接数据库的基本知识,理解什么是数据库驱动,熟悉访问数据库接口的使用流程,并掌握 Python 和 Java 连接 MySQL 数据库的编程思路。

1.4.1 Python操作MySQL

1.安装PyMySQL驱动

(1)什么是PyMySQL

PyMySQL是Python 3.x版本(x表示版本号)中用于连接MySQL服务器的一个库。Python 2中则使用MySQLdb来连接MySQL服务器。本书主要介绍Python 3如何使用PyMySQL连接MySQL数据库。

PyMySQL遵循Python数据库API v2.0规范,是一个纯Python编写的MySQL客户端库。

(2)PyMySQL的安装

在使用PyMySQL之前,先要确保PyMySQL已被安装。如果未安装,则可以使用以下命令安装最新版的PyMySQL。

$ pip3 install PyMySQL

2.Python 操作 MySQL 数据库

在使用Python连接MySQL数据库之前,需先确认以下事项。

① 已经创建MySQL数据库,这里的数据库名为TESTDB。

② 连接TESTDB数据库使用的用户名为dbuser,密码为123456(读者也可以自己设定,或者直接使用root用户名及密码)。MySQL数据库用户授权使用的命令是GRANT。

③ 连接MySQL数据库的实验机已经安装Python MySQLdb模块。

实例
# !/usr/bin/python3
import pymysql
# 打开数据库连接
db = pymysql.connect("localhost","dbuser","123456","TESTDB" )
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据
data = cursor.fetchone()
print ("Database version : %s " % data)
# 关闭数据库连接
db.close()

执行以上脚本,得到的输出结果如下。

Database version : 5.7.16-log

1.4.2 Java操作MySQL

1 .下载并安装 Java 驱动包

Java连接MySQL需要驱动包,那么下载驱动包并解压后得到 jar 库文件,然后在对应的项目中导入该库文件。需注意的是,MySQL 8.0及以上版本的数据库连接有以下不同。

① MySQL 8.0及以上版本的驱动包为mysql-connector-java-8.0.16.jar。

② com.mysql.jdbc.Driver变为com.mysql.cj.jdbc.Driver。

2 .连接数据库

以下实例使用JDBC 连接MySQL数据库,其中的一些数据(如用户名、密码等)需要读者根据自己的开发环境来配置。 MS5f6FW8JkNjrrPb9iYAQ+zRcLXqChbL4unGtHvazOGbHR/ZKi3RGcBaJWGdu/2Q

实例
package test;
import java.sql.*;
public class MySQLDemo {
    // MySQL 8.0及以下版本的JDBC 驱动名及数据库统一资源定位符(URL)
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost:3306/test";
    // MySQL 8.0及以上版本的JDBC 驱动名及数据库URL
    // static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
    // static final String DB_URL = "jdbc:mysql://localhost:3306/test?useSSL=
false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
    // 数据库的用户名与密码需要自己设置
    static final String USER = "root";
    static final String PASS = "123456";
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        try{
            // 注册 JDBC 驱动
            Class.forName(JDBC_DRIVER);
            // 打开链接
            System.out.println("连接数据库……");
            conn = DriverManager.getConnection(DB_URL,USER,PASS);
            // 执行查询
            System.out.println("实例化Statement对象……");
            stmt = conn.createStatement();
            String sql;
            sql = "SELECT id, name, url FROM websites";
            ResultSet rs = stmt.executeQuery(sql);
            // 展开结果集数据库
            while(rs.next()){
              // 通过字段检索
              int id = rs.getInt("id");
              String name = rs.getString("name");
              String url = rs.getString("url");
              // 输出数据
              System.out.print("ID: " + id);
              System.out.print(",站点名称: " + name);
              System.out.print(",站点 URL: " + url);
              System.out.print("\n");
          }
          // 完成后关闭
          rs.close();
          stmt.close();
          conn.close();
      }catch(SQLException se){
          // 处理 JDBC 错误
          se.printStackTrace();
      }catch(Exception e){
          // 处理 Class.forName 错误
          e.printStackTrace();
      }finally{
          // 关闭资源
          try{
              if(stmt != null) stmt.close();
          }catch(SQLException se2){
          }// 什么都不做
          try{
              if(conn != null) conn.close();
          }catch(SQLException se){
              se.printStackTrace();
          }
      }
      System.out.println("Goodbye!");
  }
}
点击中间区域
呼出菜单
上一章
目录
下一章
×