栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Java c Python_python mysql操作类?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java c Python_python mysql操作类?

C++、Python、Java 的MySQL数据库操作

简介

提供MySQL安装说明,以及在C++、Python、Java编程中的MySQL数据库环境配置,并且分别利用这三种语言对基础的MySQL数据库操作功能进行了实现。

引用博客:

    MySQL8.0.26安装配置教程(windows 64位) 作者:扑喽哈哈使用C++实现MySQL数据库编程 作者:Liebeandypython3基础:操作mysql数据库 作者:小小小小人kshJava中JDBC的使用详解 作者:盡盡

资源下载:

操作教程及代码文件


一、MySQL 安装

    MySQL 下载地址:

    https://dev.mysql.com/downloads/mysql/

    解压到自定义目录(此处为C:Program FilesMySQL,注意与4中配置文件中的目录路径一致)

    在解压目录中创建初始化文件my.ini

    编辑my.ini:

 [mysqld]
  # 设置3306端口
  port=3306
  # 设置mysql的安装目录   
  basedir=C:Program FilesMySQLmysql-8.0.28-winx64
  # 设置mysql数据库的数据的存放目录  
  datadir=C:Program FilesMySQLmysql-8.0.28-winx64data
  # 允许最大连接数
  max_connections=200
  # 允许连接失败的次数。
  max_connect_errors=10
  # 服务端使用的字符集默认为utf8mb4
  character-set-server=utf8mb4
  # 创建新表时将使用的默认存储引擎
  default-storage-engine=INNODB
  # 默认使用“mysql_native_password”插件认证
  #mysql_native_password
  default_authentication_plugin=mysql_native_password
  [mysql]
  # 设置mysql客户端默认字符集
  default-character-set=utf8mb4
  [client]
  # 设置mysql客户端连接服务端时默认使用的端口
  port=3306
  default-character-set=utf8mb4
    以管理员身份打开CMD进入bin目录,输入命令
mysqld --initialize --console

    记录初始密码(此处为:F%G6eT35!Kij,每个人不一样)

    接着运行命令

mysqld --install

显示Service successfully installed.表示安装成功

8. 运行命令开启服务

net start mysql

显示MySQL服务已经启动成功

    运行命令进入MySQL
mysql -u root -p

输入我们之前记录的初始密码:F%G6eT35!Kij(输入你们的密码)

    输入命令修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';

    配置环境变量

    STEP1:

    STEP2:

    安装完成

引用博客: MySQL8.0.26安装配置教程(windows 64位) 作者:扑喽哈哈


二、创建数据(之后的代码均用此数据演示)
    SQL语句
CREATE DATAbase class;
USE class;
CREATE TABLE student(
    id INT NOT NULL PRIMARY KEY AOTU_INCREMENT,
    name VARCHAR(10) NOT NULL,
    sex VARCHAR(7) NOT NULL,
    age INT NOT NULL
);
INSERT INTO student (name, sex, age) VALUES ('a', 'man', 20);
INSERT INTO student (name, sex, age) VALUES ('b', 'man', 19);
INSERT INTO student (name, sex, age) VALUES ('c', 'women', 19);
INSERT INTO student (name, sex, age) VALUES ('d', 'women', 20);
SELECt * FROM student;
    查看结果

三、C++ 与 MySQL (Visual Studio 2022) 配置环境

    鼠标右键点击项目名称,打开项目属性页

    找到"C/C++"选项下的"常规"设置页,在"附加包含目录"中添加MySQL安装目录下的"include"文件夹路径(如果找不到"C/C++"选项,需要先创建一个源文件,编写一些代码调试一下,随便写点什么都行)

    找到"链接器"选项下的"常规"设置页,在"附加库目录"中添加MySQL安装目录下的"lib"文件夹路径

    找到"链接器"选项下的"输入"设置页,在"附加依赖项"中添加MySQL安装目录下的"lib"文件夹中的"libmysql.lib"文件路径,(注意不要错选成"libmysql.dll"文件)

    找到"配置属性"选项下的"调试"设置页,在"环境"中添加MySQL安装目录下的"bin"文件夹目录,结尾加上英文的";"(有些博客中这里的路径前要加"PATH=",如果出问题都试试,应该是在安装MySQL配置系统环境变量导致的)

基本功能代码
    包含头文件
# include 
# include
using namespace std;
    关闭数据库
void closeConnection(MYSQL* mysql) {
	//关闭数据库
	mysql_close(mysql);
	printf("nDisconnect succeed.");
}
    建立数据库连接
void createConnection(MYSQL* mysql, string user, string pwd, string database, string host = "localhost") {
	//初始化数据库
	mysql_init(mysql);

	//设置字符编码
	mysql_options(mysql, MYSQL_SET_CHARSET_NAME, "gbk");

	//建立数据库连接
	if (mysql_real_connect(mysql, &host[0], &user[0], &pwd[0], &database[0], 3306, NULL, 0) == NULL) {
		printf("Error: % s.n", mysql_error(mysql));
		printf("Failed to connect.");
		closeConnection(mysql);
		exit(-1);
	}

	else {
		printf("Connect succeed.n");
	}
}
    执行SQL语句
int exeSql(MYSQL* mysql, string sql) {
	printf("nExe SQL: %s.n", &sql[0]);
	
	//执行SQL语句,返回执行结果,如果ret==0,则执行成功,否则失败
	int ret = mysql_query(mysql, &sql[0]);
	
	return ret;
}
    查询
void query(MYSQL* mysql, string sql) {
	//查询数据
	int ret = exeSql(mysql, sql);

	if (ret != 0) {
		printf("Error: %s.n", mysql_error(mysql));
		closeConnection(mysql);
		exit(-1);
	}

	else {
		//获取查询结果集
		MYSQL_RES* res = mysql_store_result(mysql);

         //输出查询结果内容
		cout << "nidt" << "namet" << "sext" << "age" << endl;
         //查询记录
		MYSQL_ROW row;
		while (row = mysql_fetch_row(res)) {
			cout << row[0] << "t";
			cout << row[1] << "t";
			cout << row[2] << "t";
			cout << row[3] << "n";
		}

		//释放结果集
		mysql_free_result(res);

		printf("nExe Succeed.n");
	}
}

6.更新(增、删、改)

void update(MYSQL* mysql, string sql) {
	int ret = exeSql(mysql, sql);

	if (ret != 0) {
		printf("Error: %s.n", mysql_error(mysql));
		closeConnection(mysql);
		exit(-1);
	}

	else {
		printf("nExe Succeed.n");
	}
}

7.测试main

int main() {

	MYSQL mysql = MYSQL();	//数据据库句柄

	createConnection(&mysql, "root", "root", "class");  //我的mysql账号密码均为“root”, 数据库名为“class”

	string sql01 = "SELECT * FROM student;";  //查询“student”表中的所有数据
	query(&mysql, sql01);

	string sql02 = "SELECt * FROM student WHERe sex='women';";  //查询“student”表中的女生数据
	query(&mysql, sql02);

	string sql03 = "INSERT INTO student (name, sex, age) VALUES ('e', 'man', 23);";  //向“student”表中插入一条记录
	update(&mysql, sql03);
	query(&mysql, sql01);

	string sql04 = "UPDATE student SET age=17 WHERe name='e';";  //更改“student”表中的一条记录
	update(&mysql, sql04);
	query(&mysql, sql01);

	string sql05 = "DELETE FROM student WHERe name='e';";  //删除名为e的学生记录
	update(&mysql, sql05);
	query(&mysql, sql01);

	string sql06 = "ALTER TABLE student AUTO_INCREMENT=1;";  //重置主键AUTO_INCREMENT,保证新增记录id的连续性
	update(&mysql, sql06);

	closeConnection(&mysql);  //关闭数据库连接
	
	return 0;
}
    调试结果
Connect succeed.

Exe SQL: SELECT * FROM student;.

id      name    sex     age
1       a       man     20
2       b       man     19
3       c       women   19
4       d       women   20

Exe Succeed.

Exe SQL: SELECt * FROM student WHERe sex='women';.

id      name    sex     age
3       c       women   19
4       d       women   20

Exe Succeed.

Exe SQL: INSERT INTO student (name, sex, age) VALUES ('e', 'man', 23);.

Exe Succeed.

Exe SQL: SELECt * FROM student;.

id      name    sex     age
1       a       man     20
2       b       man     19
3       c       women   19
4       d       women   20
5       e       man     23

Exe Succeed.

Exe SQL: UPDATe student SET age=17 WHERe name='e';.

Exe Succeed.

Exe SQL: SELECT * FROM student;.

id      name    sex     age
1       a       man     20
2       b       man     19
3       c       women   19
4       d       women   20
5       e       man     17

Exe Succeed.

Exe SQL: DELETe FROM student WHERe name='e';.

Exe Succeed.

Exe SQL: SELECt * FROM student;.

id      name    sex     age
1       a       man     20
2       b       man     19
3       c       women   19
4       d       women   20

Exe Succeed.

Exe SQL: ALTER TABLE student AUTO_INCREMENT=1;.

Exe Succeed.

Disconnect succeed.

引用博客:使用C++实现MySQL数据库编程 作者:Liebeandy


四、Python 与 MySQL(Pycharm2021 with Python3.6.8 ) 安装包pymysql(此处使用Pycharm配合Anaconda环境进行安装,其他安装方式请自行搜索)
    使用Pycharm的终端Terminal进行操作,进入工程配置的Python虚拟环境进行下载,输入一下命令
cd D:/Anaconda/envs/py36/scripts  # 进入你的Python环境路径
pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple  # 使用清华镜像源进行下载
    如下显示表示安装成功
基本功能代码
    导入pymysql包
import pymysql as mysql
    关闭MySQL连接
def close_connection(conn):
    if conn:
        # 关闭游标
        cursor = conn.cursor()
        cursor.close()
        # 关闭连接
        conn.close()
        print('nSucceed to disconnect mysql.')
    建立MySQL连接
def create_connection(usr, pwd, db, host='localhost'):
    conn = None
    try:
        # 尝试建立连接
        conn = mysql.connect(host='localhost', user=usr, passwd=pwd, db=db)
        # conn.select_db(db=db) 可用此条语句选择指定的数据库
        print('nSucceed to connect mysql.')
    except:
        print('nError: Failed to connect mysql.')
        exit(-1)
    return conn
    执行SQL语句
def exe_sql(conn, sql):
    print('nExe SQL: %s.' % sql)

    # 获取数据库游标
    cursor = conn.cursor()

    try:
        cursor.execute(sql)
    except:
        print('nError: Failed to exe SQL of '%s'.' % sql)
        close_connection(conn)
        exit(-1)

    return cursor
    查询
def query(conn, sql):
    cursor = exe_sql(conn, sql)

    # 获取查询结果集
    res = cursor.fetchall()
    print('nid', 'name', 'sex', '   age')
    for row in res:
        for item in row:
            print(item, 't', end='')
        print()

    print('nSucceed to exe SQL.')
    更新(增、删、改)
def update(conn, sql, commit=True):
    cursor = exe_sql(conn, sql)

    # update, delete, insert 操作需要手动 commit()
    # 如果不加 commit() 则当程序结束后数据库真实数据将不会发生更新
    # create, drop, alter 已内置 commit() 不需要手动commit
    # 此处我们默认将该函数视作仅供进行 update, delete, insert 操作, 具体由 commit 参数控制
    if commit:
        conn.commit()

    print('nSucceed to exe SQL.')
    测试main
if __name__ == '__main__':
    conn =  create_connection('root', 'root', 'class')  # 建立数据库连接

    sql01 = 'SELECT * FROM student;'  # 查询student表中的所有记录
    query(conn, sql01)

    sql02 = 'SELECt * FROM student WHERe sex='women';'  # 查询student表中的女生信息
    query(conn, sql02)

    sql03 = 'INSERT INTO student (name, sex, age) VALUES ('e', 'man', 23);'  # 向student表中插入一条记录
    update(conn, sql03)
    query(conn, sql01)

    sql04 = 'UPDATE student SET age=17 WHERe name='e';'  # 更新student表中的一条记录
    update(conn, sql04)
    query(conn, sql01)

    sql05 = 'DELETE FROM student WHERe name='e';'  # 删除student表中的一条记录
    update(conn, sql05)
    query(conn, sql01)

    sql06 = 'ALTER TABLE student AUTO_INCREMENT=1;'  # 重置主键AUTO_INCREMENT,保证新增记录id的连续性
    update(conn, sql06, commit=False)

    close_connection(conn)  # 关闭数据库连接
    测试结果
Succeed to connect mysql.

Exe SQL: SELECT * FROM student;.

id name sex    age
1 	a 	man 	20 	
2 	b 	man 	19 	
3 	c 	women 	19 	
4 	d 	women 	20 	

Succeed to exe SQL.

Exe SQL: SELECt * FROM student WHERe sex='women';.

id name sex    age
3 	c 	women 	19 	
4 	d 	women 	20 	

Succeed to exe SQL.

Exe SQL: INSERT INTO student (name, sex, age) VALUES ('e', 'man', 23);.

Succeed to exe SQL.

Exe SQL: SELECt * FROM student;.

id name sex    age
1 	a 	man 	20 	
2 	b 	man 	19 	
3 	c 	women 	19 	
4 	d 	women 	20 	
5 	e 	man 	23 	

Succeed to exe SQL.

Exe SQL: UPDATe student SET age=17 WHERe name='e';.

Succeed to exe SQL.

Exe SQL: SELECT * FROM student;.

id name sex    age
1 	a 	man 	20 	
2 	b 	man 	19 	
3 	c 	women 	19 	
4 	d 	women 	20 	
5 	e 	man 	17 	

Succeed to exe SQL.

Exe SQL: DELETe FROM student WHERe name='e';.

Succeed to exe SQL.

Exe SQL: SELECt * FROM student;.

id name sex    age
1 	a 	man 	20 	
2 	b 	man 	19 	
3 	c 	women 	19 	
4 	d 	women 	20 	

Succeed to exe SQL.

Exe SQL: ALTER TABLE student AUTO_INCREMENT=1;.

Succeed to exe SQL.

Succeed to disconnect mysql.

引用博客:python3基础:操作mysql数据库 作者:小小小小人ksh


五、Java 与 MySQL(IDEA with JDBC) JDBC环境配置

    jar包下载地址(选择Platform Independent版本):

    打开Project Structure面板

    进入Modules设置页面的Dependencies栏,点击+号添加jar包

    选择你的jar包解压路径

    勾选导入的jar包,并点击ok

    配置完成

基本功能代码
    导入依赖包
import java.sql.*;
    创建类
public class SQLMan {
    // 数据库连接对象
    private Connection conn = null;

    private String user;
    private String password;
    private String database;

    // 驱动名称(部分博客中的驱动名词为旧版本“com.mysql.jdbc.Driver”)
    private String driver_name = "com.mysql.cj.jdbc.Driver";

    // MySQL数据地址
    private String url;

    public SQLMan(String usr, String pwd, String db){
        this.setUser(usr);
        this.setPassword(pwd);
        this.setDatabase(db);
        String url = "jdbc:mysql://localhost:3306/"+this.database+"?characterEncoding=gbk";
        this.setUrl(url);
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getDatabase() {
        return database;
    }

    public void setDatabase(String database) {
        this.database = database;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }
}
    关闭连接
public void closeConnection() throws SQLException {
    if(this.conn!=null){
        this.conn.close();
        System.out.println("nSucceed to disconnect with mysql.");
    }
}
    建立连接
public void createConnection(){
    try {
        // 加载数据库驱动名
        Class.forName(this.driver_name);
        // 建立数据库连接
        this.conn = DriverManager.getConnection(this.url, this.user, this.password);
        System.out.println("nSucceed to connect mysql.");
    }catch (Exception e){
        System.out.println("nError: Failed to connect mysql.");
        System.exit(-1);
    }
}
    查询
public void query(String sql) throws SQLException {
    if(this.conn!=null){
        System.out.format("nExe SQL: %s.n", sql);

        // Statement 对象用于执行SQL语句
        Statement stmt = null;

        // ResultSet 结果集对象
        ResultSet res = null;

        try{
            stmt = this.conn.createStatement();
			
            // 执行查询语句
            res = stmt.executeQuery(sql);

            System.out.format("n%-15s%-15s%-15s%-15sn", "id", "name", "sex", "age");
            while(res.next()){
                int id = res.getInt("id");
                String name = res.getString("name");
                String sex = res.getString("sex");
                int age = res.getInt("age");
                System.out.format("%-15d%-15s%-15s%-15dn",  id, name, sex, age);
            }

            res.close();
            stmt.close();
        }catch (Exception e){
            System.out.format("nError: Failed to exe SQL: %s.n", sql);
            this.closeConnection();
            System.exit(-1);
        }
        System.out.println("nSucceed to exe SQL.");
    }else{
        System.out.println("nPlease create connect with mysql first.");
    }
}
    更新(增、删、改)
public void update(String sql) throws SQLException {
    if(this.conn!=null){
        System.out.format("nExe SQL: %s.n", sql);
        Statement stmt = null;
        try{
            stmt = this.conn.createStatement();

            // 执行update、delete、insert语句
            stmt.executeUpdate(sql);

            stmt.close();
        }catch (Exception e){
            System.out.format("nError: Failed to exe SQL: %s.n", sql);
            this.closeConnection();
            System.exit(-1);
        }
        System.out.println("nSucceed to exe SQL.");
    }else{
        System.out.println("nPlease create connect with mysql first.");
    }
}
    测试main
public static void main(String[] args) throws SQLException {
    SQLMan sqlMan = new SQLMan("root", "root", "class");  // 创建类实例
    
    sqlMan.createConnection();  // 建立数据库连接

    String sql01 = "SELECT * FROM student;";  // 查询student表中的所有记录
    sqlMan.query(sql01);

    String sql02 = "SELECt * FROM student WHERe sex='women';";  // 查询student表中的女生信息
    sqlMan.query(sql02);

    String sql03 = "INSERT INTO student (name, sex, age) VALUES ('e', 'man', 23);"; // 向student表中插入一条记录
    sqlMan.update(sql03);
    sqlMan.query(sql01);

    String sql04 = "UPDATE student SET age=17 WHERe name='e';";  // 更新student表中的一条记录
    sqlMan.update(sql04);
    sqlMan.query(sql01);

    String sql05 = "DELETE FROM student WHERe name='e';";  // 删除student表中的一条记录
    sqlMan.update(sql05);
    sqlMan.query(sql01);

    String sql06 = "ALTER TABLE student AUTO_INCREMENT=1;";  // 重置主键AUTO_INCREMENT,保证新增记录id的连续性
    sqlMan.update(sql06);

    sqlMan.closeConnection();  // 关闭数据库连接
    }
    测试结果
Succeed to connect mysql.

Exe SQL: SELECT * FROM student;.

id             name           sex            age            
1              a              man            20             
2              b              man            19             
3              c              women          19             
4              d              women          20             

Succeed to exe SQL.

Exe SQL: SELECt * FROM student WHERe sex='women';.

id             name           sex            age            
3              c              women          19             
4              d              women          20             

Succeed to exe SQL.

Exe SQL: INSERT INTO student (name, sex, age) VALUES ('e', 'man', 23);.

Succeed to exe SQL.

Exe SQL: SELECt * FROM student;.

id             name           sex            age            
1              a              man            20             
2              b              man            19             
3              c              women          19             
4              d              women          20             
5              e              man            23             

Succeed to exe SQL.

Exe SQL: UPDATe student SET age=17 WHERe name='e';.

Succeed to exe SQL.

Exe SQL: SELECT * FROM student;.

id             name           sex            age            
1              a              man            20             
2              b              man            19             
3              c              women          19             
4              d              women          20             
5              e              man            17             

Succeed to exe SQL.

Exe SQL: DELETe FROM student WHERe name='e';.

Succeed to exe SQL.

Exe SQL: SELECt * FROM student;.

id             name           sex            age            
1              a              man            20             
2              b              man            19             
3              c              women          19             
4              d              women          20             

Succeed to exe SQL.

Exe SQL: ALTER TABLE student AUTO_INCREMENT=1;.

Succeed to exe SQL.

Succeed to disconnect with mysql.

引用博客:Java中JDBC的使用详解 作者:盡盡

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/783179.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号