Python学习之六_同时访问Oracle和Mysql的方法


背景

jaydebeapi 可以访问大部分数据库.
但是他有一个问题是仅能够访问一种类型的数据库.
如果同事连接两种数据库,那么就会出现问题
会有如下的提示:
TypeError: Class com.mysql.cj.jdbc.Driver is not found
网上有方法是修改 jaydebeapi的源码进行完善
我这边想了下感觉有一定的风险. 毕竟升级和连续处理比较麻烦.
基于此,我想以Oracle为基准时, 使用cx-Oracle的方式连接Oracle
其他的数据库使用 jaydebeapi的方式进行处理.
这样的话可以规避这个问题. 当然规避的不是非常彻底. 一次只能是一对一,不能一对多.

cx-Oracle的安装

注意cx-Oracle 需要先安装module
最好也安装一下 oracle的instant的安装介质.
需要的其他module也比较多
比如 sys, configparser,os等.

配置文件说明

[cx]
ip=10.110.xxx.xxx
port=1521
uname=something
pwd=somepassword
tnsname=ora19c

代码处理 第一部分

import cx_Oracle
import configparser
import os
os.environ['path'] = r'D:\work\instantclient_12_2' # 引入必须要的包, 以及os.environ环境变量设置
# 将oracle的instantclient添加进来.

代码处理 第二部分

    config = configparser.ConfigParser()
config.read('cx.ini', encoding='utf-8') ip = config.get('cx', 'ip')
port = config.get('cx', 'port')
uname = config.get('cx', 'uname')
pwd = config.get('cx', 'pwd')
tnsname = config.get('cx', 'tnsname') dsnStr = cx_Oracle.makedsn(ip, port, service_name=tnsname)
connect_str = "oracle://%s:%s@%s" % (uname, pwd, dsnStr) conn = cx_Oracle.connect(uname, pwd, dsn=dsnStr)
cur = conn.cursor()
cur.execute(sql)
data = cur.fetchall()
cur.close()
conn.close()

jaydebeapi访问Mysql的方法-配置文件

[mysql]
jdbcString=com.mysql.cj.jdbc.Driver
driverPath=./driver/mysql-connector-java-8.0.23.jar
urlString=jdbc:mysql://10.110.xxx.xxx:3306/xxxx
userName=xxxx
passWord=xxxxxxx?! # 需要注意 Mysql5和Mysql8的驱动类型是不一样的
Mysql5.x: com.mysql.jdbc.Driver
Mysql8.x:com.mysql.cj.jdbc.Driver

连接代码

config.read('db.ini',encoding='utf-8')
def getconn(dbinfo) : jdbcString = config.get(dbinfo,'jdbcString')
driverPath = config.get(dbinfo,'driverPath')
urlString = config.get(dbinfo,'urlString')
userName = config.get(dbinfo,'userName')
passWord = config.get(dbinfo,'passWord')
conn = jaydebeapi.connect(jdbcString,urlString,[userName,passWord],driverPath)
return conn
引用的代码为: import dbconnection def getdata(sql):
connMysql = dbconnection.getconn('mysql')
curMysql = connMysql.cursor()
curMysql.execute(sql)
data = curMysql.fetchall()
curMysql.close()
return data

其他说明

这种方式下就可以同事打开两种数据库进行查询和比较了.
各种方式其实都有, 感谢原作者提供的各种资料
翻阅了很多blog, 不再一一罗列了.

Python学习之六_同时访问Oracle和Mysql的方法的更多相关文章

  1. 64位 SQL Server2008链接访问Oracle 过程汇总解决方法记录

    64位 SQL Server2008链接访问Oracle 过程汇总解决方法记录 经过几天不停的网上找资料,实验,终于联通了. 环境:系统:win 2008 ,SqlServer2008 R2, 连接O ...

  2. 【Python学习之六】文件操作

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 python3.6 一.文件的打开与关闭 使用open函数,可以打开一 ...

  3. Python学习笔记_我的参考网址

    Python学习笔记, 下面记录网上搜到的可参考的网址: 一.关于Tkinter 1.Python3中tkinter模块使用方法详解 https://blog.csdn.net/Fighting_Bo ...

  4. 【转】JMeter 通过 JDBC 访问 Oracle 和 MySQL

    JMeter 的手册中描述了如何访问 MySQL,但是没有说明如何访问 Oracle.对于没有 Java 应用开发经验和对 Oracle 不是特别熟悉的朋友,可以参考这篇文章来简单.快速的配置好 JM ...

  5. c#访问Oracle问题及解决方法

    Q:访问oracle 查询条件带汉字结果集为空的问题 A:数据库连接字符串中加入Unicode=true即可. 如 <add key="DbConnectionString" ...

  6. 实验楼Python学习记录_挑战字符串操作

    自我学习记录 Python3 挑战实验 -- 字符串操作 目标 在/home/shiyanlou/Code创建一个 名为 FindDigits.py 的Python 脚本,请读取一串字符串并且把其中所 ...

  7. python学习日记(OOP访问限制)

    在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑. 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的na ...

  8. Python学习第三篇——访问列表部分元素

    dongman =["huoying","sishen","si wang bi ji","pan ni de lu lu xiu ...

  9. python学习记录_中断正在执行的代码,执行剪切板中的代码,键盘快捷键,魔术命令,输入和输出变量,记录输入和输出变量_

    2018-03-28 00:56:39 中断正在执行的代码 无论是%run执行的脚本还是长时间运行的命令ctrl + cIn [1]: KeyboardInterrupt 执行剪切板中的代码 ctrl ...

  10. Python学习笔记_二维数组的查找判断

    在进行数据处理的工作中,有时只是通过一维的list和有一个Key,一个value组成的字典,仍无法满足使用,比如,有三列.或四列,个数由不太多. 举一个现实应用场景:学号.姓名.手机号,可以再加元素 ...

随机推荐

  1. Java 在Excel中添加筛选器并执行筛选

    以下内容介绍通过Java程序在Excel添加筛选器并执行筛选.程序需要使用Excel工具类库Free Spire.XLS for Java,本文中使用的是免费版,可在官网下载jar包,解压导入jar文 ...

  2. 全域Serverless化,华为云引领下一代云计算新范式

    本文分享自华为云社区<全域Serverless化,华为云引领下一代云计算新范式>,作者: 华为云PaaS服务小智 . 近日,华为开发者大会2023(Cloud)在东莞成功举办,期间&quo ...

  3. 云小课|使用SpringBoot快速构建FunctionGraph HTTP函数

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:本篇云小课主要指导 ...

  4. 看MindSpore加持下,如何「炼出」首个千亿参数中文预训练语言模型?

    摘要:千亿参数量的中文大规模预训练语言模型时代到来. 本文分享自华为云社区< MindSpore开源框架加持,如何「炼出」首个千亿参数.TB级内存的中文预训练语言模型?>,原文作者:che ...

  5. 万字长文|Hadoop入门笔记(附资料)

    大数据迅速发展,但是Hadoop的基础地位一直没有改变.理解并掌握Hadoop相关知识对于之后的相关组件学习有着地基的作用.本文整理了Hadoop基础理论知识与常用组件介绍,虽然有一些组件已经不太常用 ...

  6. 基于迁移学习的基础设施成本优化框架,火山引擎数智平台与北京大学联合论文被KDD收录

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   基于迁移学习的基础设施成本优化框架,火山引擎数智平台与北京大学联合论文被KDD收录 近期,第29届国际知识发现 ...

  7. 【PS算法理论探讨三】 Photoshop中图层样式之 颜色叠加/渐变叠加/图案叠加 算法原理初探讨。

    这三个表面上看上去很简单,我们就先描述简单的部分. 颜色叠加:这个和编辑菜单下的填充 颜色 基本是一个意思,相当于在原有的图层上部添加了一个纯实色的虚拟图层,选项里的不透明度和混合模式和普通的概念是一 ...

  8. AtCoder Beginner Contest 177 (个人题解,C后缀和,D并查集,E质因数分解)

    补题链接:Here A - Don't be late 题意:高桥(Takahashi )现在要去距离家 \(D\) 米的地方面基,请问如果以最高速度 \(S\) 能否再 \(T\) 时刻准时到达? ...

  9. 14、SpringBoot-easyexcel导出excle

    系列导航 springBoot项目打jar包 1.springboot工程新建(单模块) 2.springboot创建多模块工程 3.springboot连接数据库 4.SpringBoot连接数据库 ...

  10. Linux mknod命令详解

    Linux一切皆文件,系统与设备通信之前,要建立一个存放在/dev目录下的设备文件,默认情况下就已经生成了很多设备文件,有时候自己手动新建一些设备文件,这就会用到mknod. 语法格式:mknod[选 ...