Python学习之六_同时访问Oracle和Mysql的方法
Posted 济南小老虎
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习之六_同时访问Oracle和Mysql的方法相关的知识,希望对你有一定的参考价值。
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 学习之《Learn Python3 The Hard Way 》第六部分学习笔记
以上是关于Python学习之六_同时访问Oracle和Mysql的方法的主要内容,如果未能解决你的问题,请参考以下文章
python学习之第十六课时--缩进(indentation)