我试图使用oracledb从python连接到数据库,但我得到错误:
ORA-28759:无法打开文件
我的代码是标准连接代码:
import oracledb
oracledb.init_oracle_client(lib_dir=r"C:\oracle\instantclient_18_5")
dbadw = """###fromtnsnames"""
connx = oracledb.connect(user='my_user', password ='my_password',dsn=dbadw , encoding="UTF-8")
c= connx.cursor()
如果没有初始化oracle_client,我得到的错误是:
DPY-6005: cannot connect to database (CONNECTION_ID=r+tcRVTAlqmL/bxaTd38UA==).
DPY-6000: Listener refused connection. (Similar to ORA-12506)
用户im使用连接到数据库不是管理员,但我检查,我可以打开和写入文件,并写入文件的钱包目录
我使用jupyter笔记本电脑
我也尝试了cx_Oracle,但pip install cx_Oracle抛出错误:需要Microsoft Visual C++ 14.0或更高版本。得到它与“微软C++构建工具”,我不能安装,因为我不是管理员。我检查了许多其他职位上同样的错误,但我没有得到任何地方
任何其他信息,我可以给予,以解决这个问题,让我知道,提前感谢!
2条答案
按热度按时间n53p2ov01#
错误
ORA-28759: failure to open file
通常是由于您的sqlnet.ora
文件在其WALLET_LOCATION
条目中没有有效值。这必须是文件cwallet.sso
所在的目录。在精简模式下引发的带有短语
Similar to ORA-12506
的错误DPY-6005
告诉您类似的事情。在瘦模式下,您必须在wallet_location
参数中指定钱包的位置。您还需要(默认情况下)指定wallet_password
参数。连接到云数据库的文档应该涵盖您可能遇到的任何剩余问题!
abithluo2#
对于任何人在未来面临同样的问题,我真的很挣扎与这个问题,但安东尼的答案帮了我很大的忙。
我所做的就是遵循文档中的步骤
基本上,将tnsname.ora、sqlnet.ora和cwallet.sso复制到instantclient/network/admin目录,或者您可以选择任何目录,只要您在sqlnet.ora文件中指定了它。
希望这对你有帮助!