python基于jar包驱动操作mysql数据库

18 篇文章 0 订阅
import jpype.imports
from jpype import JInt, JShort
from jpype import dbapi2
import time
print(jpype.getDefaultJVMPath())


jpype.startJVM(classpath=['mysql-connector-java-5.1.49.jar']) 
# python 语法导入java 类
from com.mysql.jdbc import *


class DB():
    def __init__(self, conn_url = "jdbc:mysql://1.1.1.1:3306/smmb?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false"
                 , driver_args={"user":"root","password":"root123"}
                 , driver='com.mysql.jdbc.Driver'):
        # 建立连接 
        self.conn = dbapi2.connect(conn_url,driver=driver,driver_args=driver_args)
        # 创建游标,操作设置为字典类型        
        self.cur = self.conn.cursor()
    

    def __enter__(self):
        # 返回游标        
        return self.cur

    #def __exit__(self, exc_type, exc_val, exc_tb):
    def exit(self):
        # 提交数据库并执行        
        self.conn.commit()
        # 关闭游标        
        self.cur.close()
        # 关闭数据库连接        
        self.conn.close()
    #创建表
    def create(self,table_name,create_sql):
        # 使用 execute() 方法执行 SQL,如果表存在则删除
        drop_sql = 'DROP TABLE IF EXISTS {}'.format(table_name)
        self.cur.execute(drop_sql)
        # 使用预处理语句创建
        self.cur.execute(create_sql)
        self.conn.commit()
        print(table_name,'create table successful ')
    #插入表
    def insert(self,sql):

        try:
   # 执行sql语句
            self.cur.execute(sql)
           # 提交到数据库执行
            self.conn.commit()
            print(sql,'insert successful ')
        except Exception as e:
           # 如果发生错误则回滚
            self.conn.rollback()
            print (sql,"Error: insert failed",e)
        
    #批量插入表
    def inserts(self,sql,val):
        try:
           # 执行sql语句
            self.cur.executemany(sql,val)
           # 提交到数据库执行
            self.conn.commit()
            print(sql,'inserts successful ')
        except Exception as e:
           # 如果发生错误则回滚
            self.conn.rollback()
            print (sql,"Error: inserts failed",e)
    #删除表
    def delete(self,sql):
        try:
   # 执行sql语句
            self.cur.execute(sql)
           # 提交到数据库执行
            self.conn.commit()
            print(sql,'delete successful ')
        except Exception as e:
           # 如果发生错误则回滚
            self.conn.rollback()
            print (sql,"Error: delete failed",e)
    #更新表
    def update(self,sql):
        try:
   # 执行sql语句
            self.cur.execute(sql)
           # 提交到数据库执行
            self.conn.commit()
            print(sql,'update successful ')
        except Exception as e:
           # 如果发生错误则回滚
            self.conn.rollback()
            print (sql,"Error: update failed",e)
    #查询表
    def select(self,sql):
        try:
           # 执行SQL语句
            self.cur.execute(sql)
            col = self.cur.description
           # 获取所有记录列表
            results = self.cur.fetchall()
            print(sql,'select successful ')
            return results,col
        except Exception as e:
            print (sql,"Error: select failed",e)
    
    #查询表结构
    def show(self,table_name):
        show_sql = "show create table  {}".format(table_name)
        try:
           # 执行SQL语句
            self.cur.execute(show_sql)
            #col = self.cur.description
           # 获取所有记录列表
            results = self.cur.fetchall()
            print(table_name,'show successful ')
            return results
        except Exception as e:
            print (table_name,"Error: show failed",e)

        

# if __name__ == '__main__':
#     db = DB()
#     sql = 'select * from EMPLOYEE'
#     result = db.select(sql)
#     db.exit()

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

the uzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值