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. 2023-05-31:给定一个整数数组 A,你可以从某一起始索引出发,跳跃一定次数 在你跳跃的过程中,第 1、3、5... 次跳跃称为奇数跳跃 而第 2、4、6... 次跳跃称为偶数跳跃 你可以按以下

    2023-05-31:给定一个整数数组 A,你可以从某一起始索引出发,跳跃一定次数 在你跳跃的过程中,第 1.3.5... 次跳跃称为奇数跳跃 而第 2.4.6... 次跳跃称为偶数跳跃 你可以按以下 ...

  2. JQuery&Ajax基础知识

    JQuery&Ajax基础知识 1.Jquery简介 Query是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)于2006年 ...

  3. react+echarts出现“There is a chart instance already initialized on the dom.”

    写了一个关于echatrs组件,报错dom重复 配置信息从props拿 let chart; useEffect(() => { if (chart) { updateChartView(); ...

  4. 赶在520之前,程序员如何用Python送上最特别的“我爱你”表白

    摘要:每到情人节.七夕节,不少小伙伴大伙伴们都会遇到这样一个世纪问题--怎么给女朋友/老婆一个与众不同的节日惊喜.今天给大家分享一个独特的表白方法--用"我爱你"拼出心爱人的模样! ...

  5. 身未动心已远,AI带你流浪地球

    摘要:我们提供了一键运行的notebook AI作画 Dreambooth 生成自定义主体,可以在ModelArts平台上调试开发自己的文生图模型. 本文分享自华为云社区<DreamBooth+ ...

  6. 《低代码发展白皮书(2022年)》&《2022低代码·无代码应用案例汇编》,发布了

    摘要:信息通信研究院云计算与大数据研究所副所长栗蔚发布了<低代码发展白皮书(2022年)>&<2022低代码·无代码应用案例汇编>. 本文分享自华为云社区<华为参 ...

  7. 火山引擎数智平台ByteHouse入围稀土掘金《Top10 年度创新产品》

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近日,国内开发者技术社区稀土掘金发布「2022 稀土掘金引力榜」,旨在盘点 2022 年在数字化转型领域内最具影响 ...

  8. 还在用 Excel 和 SQL?火山引擎 VeDI 这款产品帮你更快处理数据

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 对大多数职场打工人来说,看数据.用数据一直是项有"门槛"的工作. 特别是在企业业务快速发展的背景下,为 ...

  9. 自然语言处理 Paddle NLP - 机器同传技术及应用-理论

    基础 自然语言处理(NLP) 自然语言处理PaddleNLP-词向量应用展示 自然语言处理(NLP)-前预训练时代的自监督学习 自然语言处理PaddleNLP-预训练语言模型及应用 自然语言处理Pad ...

  10. NOKOV度量光学动作捕捉系统工作流程

    如果你对影视.动画或者游戏有一定关注,相信你一定听说过"动作捕捉".事实上,无论是屏幕中的战场,还是真实的军事领域,从2K游戏中的虚拟球员,到医疗.康复.运动领域的专业研究:从机器 ...