python连接oracle数据库,并读取数据表为dataframe格式

具体代码如下,代码中的中文部分需要自行修改成自己的相关信息。

#!/usr/bin/env python
#coding:utf-8

#导入数据模块
import cx_Oracle
import xlsxwriter
import time
import pandas as pd
from sshtunnel import SSHTunnelForwarder

#远程服务器及其上的数据库相关信息
userInfo = '数据库用户名/数据库密码'
dbStr = '@数据库所在的IP地址:1521/服务名'  #oracle数据库端口号是1521
connstr = userInfo + dbStr
 
#映射到本地相关信息 
LOCAL_PORT = 38399  #自行设置的本地对应端口号
DSN = "数据库用户名/数据库密码@localhost:%d/服务名" %LOCAL_PORT
 
#数据库语句示例
sql ='''
     select * from wfdata.lt_patient_info where rownum<100
     '''
 
# 1、不通过ssh来连接Oracle数据库直接用以下语句即可,此处我们需要配置SSH通道,所以不直接连接
# con = cx_Oracle.connect(connstr)
# cursor = con.cursor()
# query1 = cursor.execute(sql)  


#2、通过ssh中间跳板机来连接Oracle数据库
with SSHTunnelForwarder(
         ('主机名', 22),    #使用的SSH通道相对应的主机IP地址,即远程中间跳板机器的配置,端口默认22
         ssh_username="用户名",
         ssh_password="密码",
         remote_bind_address=("数据库所在的IP地址", 1521), #远程数据库所在机器配置
         local_bind_address=("127.0.0.1", LOCAL_PORT)    #本地转发接口配置,与DSN的配置相关
         ) as server:
    print("sshConnectSuccess")  #可以打印一下看是否连接成功
    
    #连接数据库,读取数据表
    con = cx_Oracle.connect(DSN)
    cursor = con.cursor()
    query1 = cursor.execute(sql)
    
    #将读取的数据保存为dataframe数据格式
    data = pd.DataFrame(query1.fetchall())
    print(data)  #可以打印看一下数据的情况
    
    #操作完成后记得关闭服务
    cursor.close()
    con.close()

参考:https://blog.csdn.net/weixin_34466671/article/details/113543254

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐