如何通过Python连接到Oracle ADW云数据库?

2024-10-06 12:04:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现了这个website,它表明我可能能够使用python连接到我的Oracle ADW云数据库。我试着运行下面的代码,但一直遇到相同的错误。有人知道如何解决这个问题吗?注意:更改密码的原因很明显

Jupyter笔记本中的代码:

import cx_Oracle as cx
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
pswd = 'ABC'

#Connect to Autonomous Data Warehouse 
con = cx.connect(user = 'ADMIN', password = pswd)
query = 'SELECT * from TEST123'
data_train = pd.read_sql(query, con=con)

错误:

DatabaseError: Error while trying to retrieve text for error ORA-01804

当我运行以下代码时,我会遇到相同的错误:

...
#Connect to Autonomous Data Warehouse 
con = cx.connect('ADMIN',pswd,"mltest_high")
query = 'SELECT * from TEST123'
data_train = pd.read_sql(query, con=con)

Tags: to代码importdataasconnect错误query
2条回答

根据错误号和未找到消息文本的事实猜测,cx_Oracle正在使用Oracle即时客户端库,但您已将Oracle_HOME环境变量设置为其他软件。如果是,请取消ORACLE_主页的设置。或者,您可能只使用本地Oracle DB安装中包含的库,并且没有完全设置Oracle环境变量,例如,没有将Oracle_设置为HOME。或者您可能需要更新版本的Oracle客户端库—获取19c库,例如Oracle Instant client。同时检查关于ORA-1804的其他问题。如果您用运行Python的计算机上安装的Oracle软件的信息更新您的问题,可能会得到更详细的答案

听起来您已经为连接整理好了云钱包,但以下是阅读您的标题后出现此问题的参考资料:

因此,为了弄清楚Oracle钱包如何与SLQNET.ora和TNS_NAMES.ora文件以及系统环境变量内联工作,这需要大量的教育,但this website确实让visual studio代码中的python(in.ipynb)能够与Oracle的云ADW系统相连接。这几乎正是我让它在我的机器上工作所做的,但我没有在虚拟环境中工作。我不得不想出一个解决上述项目的办法,但我能够使用系统链接到我的钱包中的目录

重要的是要知道你需要做这些事情才能让它工作。从ADW下载电子钱包时,需要复制TNS_名称中的高/中/低行,并将其粘贴到Oracle/network/admin/TNS_NAMES.ora文件中。您还需要从sqlnet.ora文件中获取钱包信息和ssl服务器,并将其放入Oracle/network/admin/目录中的sqlnet.ora文件中。如果您选择不使用本文中演示的虚拟环境,要使钱包信息行的目录链接正常工作,您需要将所述目录设置为钱包文件夹的目录。我拉开了我的拉链;不确定是否需要

最后,您需要将TNS_名称的系统环境变量设置为TNS_名称.ora和sqlnet.ora系统文件所在的位置(不是钱包下载文件夹中的文件),可能位于Oracle\network\admin中

下面是为我工作的代码。我希望这对其他人有所帮助,他们不必像我一样,经历同样的困难才能明白这一点

import cx_Oracle
import os
import pandas as pd

os.environ.get('TNS_ADMIN')
connection = cx_Oracle.connect('<Oracle ADW Username', '<Oracle ADW Password>', '<TNS_NAME entry (high/med/low)>')

cursor = connection.cursor()
rs = cursor.execute("SELECT * FROM TEST123")
df = pd.DataFrame(rs.fetchall())
df

相关问题 更多 >